1. 程式人生 > >使用npm和cnpm分別安裝指定版本的vuejs(解決npm install安裝了太多架包的問題)

使用npm和cnpm分別安裝指定版本的vuejs(解決npm install安裝了太多架包的問題)

解決安裝太多架包的問題


比如我需要安裝vue 1.0.28版本;指定安裝這個版本的;

安裝vue 1.0.28時,執行如下命令,卻發現node_modules檔案裡猛然增加了幾十個架包,看起來非常不爽。

#   只安裝Vue V1的最新版本
npm install [email protected]">=1.0.28 < 2.0.0" --save
#   輸出目錄檔案   
ll node_modeles/

執行ll命令後,輸出的內容如下:

drwxr-xr-x 1 yiifaa 197609 0 127 16:10 acorn/
drwxr-xr-x 1 yiifaa 197609 0 127
16:10 amdefine/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 ast-types/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 balanced-match/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 base62/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 bootstrap/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 brace-expansion/ drwxr-xr-x 1 yiifaa 197609 0 127
16:10 commander/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 commoner/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 concat-map/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 defined/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 detective/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 envify/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 esprima-fb
/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 font-awesome/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 glob/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 graceful-fs/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 graceful-readlink/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 iconv-lite/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 inflight/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 inherits/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 jqGrid/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 jquery/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 jstransform/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 minimatch/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 minimist/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 mkdirp/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 object-assign/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 once/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 path-is-absolute/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 private/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 q/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 recast/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 require-css/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 requirejs/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 source-map/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 text/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 through/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 vue/ drwxr-xr-x 1 yiifaa 197609 0 127 16:10 wrappy/

對比package.json檔案,發現內容增多了幾倍,package.json的依賴如下:

"dependencies": {
    "bootstrap": "^3.3.6",
    "font-awesome": "^4.7.0",
    "jqGrid": "^5.1.1",
    "jquery": "^3.1.1",
    "require-css": "^0.1.8",
    "requirejs": "^2.3.2",
    "text": "github:requirejs/text",
    "vue": "^1.0.28"
 }

這些莫名奇妙的acorn、amdefine……是從哪裡來的?

檢視npm使用文件後,新增引數–only引數,只安裝生產版本,發現node_modules目錄的結果依舊如此,命令如下。

# --only還可以取值為dev或development,表示還會安裝開發依賴
npm install [email protected]">=1.0.28 < 2.0.0" --save --only=production

繼續翻閱npm使用文件,發現文件裡有一段這樣的話

dependencies will be added as close to the top as is possible without breaking any other modules
  • 1

原來如此!NPM從3.0.0開始,架包的依賴不再安裝在每個架包的node_modules資料夾內,而是安裝在頂層的node_modules資料夾中。如果要啟用之前的風格,則可以新增命令引數legacy-bundling,如下:

#   清空node_modules檔案後,重新執行命令
npm install [email protected]">=1.0.28 < 2.0.0" --legacy-bundling

再次執行”ll node_modeles/”,發現架包已經乾淨清澈了很多,與package.json完全呼應上了,如下:

drwxr-xr-x 1 yiifaa 197609 0 127 15:53 bootstrap/
drwxr-xr-x 1 yiifaa 197609 0 127 15:53 font-awesome/
drwxr-xr-x 1 yiifaa 197609 0 127 15:53 jqGrid/
drwxr-xr-x 1 yiifaa 197609 0 127 15:53 jquery/
drwxr-xr-x 1 yiifaa 197609 0 127 15:53 require-css/
drwxr-xr-x 1 yiifaa 197609 0 127 15:53 requirejs/
drwxr-xr-x 1 yiifaa 197609 0 127 15:53 text/
drwxr-xr-x 1 yiifaa 197609 0 127 15:53 vue/

結論

執行npm install後,造成node_modules資料夾中出現了太多架包,並非是命令執行錯誤或者是環境的問題,而是npm升級導致的規範變更。

腦中突然浮現一個問號,npm官方為何不將這些依賴全部存入一個固定的資料夾,例如dependence,這樣既能保證所有庫包的版本相容性,又能保證node_modules的乾淨性?

相關推薦

使用npmcnpm分別安裝指定版本vuejs(解決npm install安裝的問題)

解決安裝太多架包的問題比如我需要安裝vue 1.0.28版本;指定安裝這個版本的;安裝vue 1.0.28時,執行如下命令,卻發現node_modules檔案裡猛然增加了幾十個架包,看起來非常不爽。# 只安裝Vue V1的最新版本 npm install [email&#

vue安裝npmcnpm

webp nod 項目文件 ber web glob 淘寶 pla registry 安裝好node.js npm: 1)npm install -g vue-cli //安裝全局vue-cli腳手架 2)vue init webpack project_name(項目文件

vue-cli 安裝,解除安裝安裝指定版本建立專案問題相關整理

vue-cli2.x.x 版本 安裝指定版本 所有版本安裝,前提是已經全域性安裝過node 和 全域性安裝過webpack npm install -g [email protected] vue-cli2.x.x 版本解除安裝 npm uninstall -

Ubuntu通過apt-get安裝指定版本查詢指定軟體有多少個版本

一、通過apt-get安裝指定版本apt-get install <<package name>>=<<version>>二、查詢指定軟體有多少個版本說明:在Linux用這個查詢並不能完全的把所有版本都列舉出來,因為每個版本都與系統版本和CPU架構有關,比如一個

npmcnpm(windows)安裝步驟

一、什麼是npm和cnpm npm(node package manager):nodejs的包管理器,用於node外掛管理(包括安裝、解除安裝、管理依賴等) cnpm:因為npm安裝外掛是從國外伺服器下載,受網路的影響比較大,可能會出現異常,如果npm的伺

centos7安裝指定版本dockerkubeadm安裝kubernetes

一、事前準備 1、所有節點彼此網路互通,並且k8s-m1 SSH 登入其他節點為 passwdless,由於過程中很多會在某臺節點(k8s-m1)上以 SSH 複製與操作其他節點 2、確認所有防火牆與 SELinux 已關閉。如 CentOS: systemctl st

Ubuntu通過apt-get安裝指定版本查詢軟件源有多少個版本

bsp -c code apt-get 不能 cpu架構 pack 1.0 inux 一、通過apt-get安裝指定版本 apt-get install <<package name>>=<<version>> 二

laravel composer 安裝指定版本以及基本的配置

err ida 擴展 wap 服務層 cache ssi san ice 1 安裝指定的 laravel版本 以下的案例是安裝5.5版本 composer create-project laravel/laravel=5.5.* --prefer-dist 2 配置 優

Pycharm如何安裝指定版本的模塊

圖片 分享圖片 模塊名 點擊 alt nbsp info 選擇 blog 在setting界面中,選擇Project Interpreter,點擊+號,搜索模塊名稱,在右下方可以選擇需要安裝的版本。 Pycharm如何安裝指定版本的模塊

pip 安裝指定版本軟件

nbsp 有時 jinja 最新版本 軟件包 link 指定版本 新版 ans 默認情況下,pip 將安裝最新版本的軟件包,但有時需要獲取特定版本的安裝包,比如 jinja2 從 2.9 開始加入了 async 關鍵字,這個會導致 py2exe 報錯:Invalid Syn

pip install 安裝指定版本

tag ram bsp top SM framework 操作 all python pip install 安裝指定版本的包 要用 pip 安裝指定版本的 Python 包,只需通過 == 操作符 指定 pip install robotframework=

pip 查看已安裝模塊、卸載指定模塊、安裝指定版本模塊

例如 都是 col heatmap 回車 fff 處理 don == 操作背景 最近使用 pandas+plotly 畫heatmap(熱力圖),來處理股票數據,語法、步驟都沒問題,但到畫圖那一步老是報錯,且 plotly 版本為3.0.0; 最後找到原因,plotly

centos7下安裝指定版本mysql5.7.23

運行 blank 8.0 comm 手動 yum str 禁用 名稱 現在mysql版本已經到MySQL 8.0(GA)穩定版本了,所以需求是想簡單又快速在centos7下安裝指定版本例如MySQL 5.7(GA)版本有下面這種方法 首先需要到mysql官網這裏下載對應R

yum命令showduplicates安裝指定版本

dock sta 9.1 選擇 redhat yum命令 沒有 x86 返回 默認情況下,我們用yum list 或者 yum install 的時候,yum會默認選擇最新的版本。 如果我們需要安裝指定版本的某個軟件包,以使之能夠和我們現有環境的軟件包版本匹配,那麽就需要用

如何使用 Yum Repository 安裝指定版本的 MySQL

post serve mysql 安裝 word deb reg ade pat stat 自從從使用 debian 系的 apt-get 轉到使用 yum 工具之後一直不是很習慣,也沒有去看過很多工具包安裝的時候到底影響到了哪些文件等。這次借這次社區版 MySQL 安裝來

安裝指定版本的minikube

ima 原理 amp 單節點 當我 本地部署 bin 解決方案 load Minikube是什麽? Kubernetes集群的安裝和部署對於很多初學者來說是一道坎。為了方便大家開發和體驗Kubernetes,Kubernetes開源社區提供了可以在本地部署的Minikube

node總結之管理器npmcnpm瞭解下

npm(node package manager)是nodejs的包管理器,用於node外掛管理(包括安裝、解除安裝、管理依賴等), NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS程式碼部署上的很多問題,它是 Node 獲得成功的重要原因之一。 但是我們平常安裝包的時候,還

CentOS 7安裝指定版本的資料庫postgresql

安裝指定版本的資料庫postgresql(centos7.4) 網上搜索Linux安裝postgresql有很多教程,主要是下載rpm包線上安裝: yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rh

使用Docker官方yum源安裝指定版本的docker的標準操作流程

解除安裝老版本的Docker,沒有安裝則不解除安裝。 yum remove docker \ docker-client \ docker-client-latest \

Django如何安裝指定版本

    Django預設安裝最新版本:pip install django Django後面接版本號就可以了:pip install django==1.11.7如果使用pip install安裝庫比較慢,可以用豆瓣的映象:pip install django