npm install 和 npm i 是一樣
--save 和 -S 是一樣
--save-dev 和 -D 是一樣的
區(qū)別:
npm install 在安裝 npm 包時,有兩種命令參數(shù)可以把它們的信息寫入 package.json 文件跷乐,一個是npm install--save另一個是 npm install –save-dev,他們表面上的區(qū)別是--save 會把依賴包名稱添加到 package.json 文件 dependencies 鍵下趾浅,--save-dev 則添加到 package.json 文件 devDependencies 鍵下愕提,譬如:
{
"dependencies": {
"vue": "^2.2.1"
},
"devDependencies": {
"babel-core": "^6.0.0",
"babel-loader": "^6.0.0",
"babel-preset-latest": "^6.0.0",
"cross-env": "^3.0.0",
"css-loader": "^0.25.0",
"file-loader": "^0.9.0",
"vue-loader": "^11.1.4",
"vue-template-compiler": "^2.2.1",
"webpack": "^2.2.0",
"webpack-dev-server": "^2.2.0"
}
}
不過這只是它們的表面區(qū)別。它們真正的區(qū)別是皿哨,npm自己的文檔說dependencies是運行時依賴浅侨,devDependencies是開發(fā)時的依賴。即devDependencies 下列出的模塊证膨,是我們開發(fā)時用的如输,比如 我們安裝 js的壓縮包gulp-uglify 時,我們采用的是 “npm install –save-dev gulp-uglify ”命令安裝,因為我們在發(fā)布后用不到它不见,而只是在我們開發(fā)才用到它澳化。
舉例:
像jQuery庫或者Angular框架類似的,我們在開發(fā)完后后肯定還要依賴它們稳吮,否則就運行不了缎谷,這是dependencies。而寫 ES6 代碼灶似,需要babel轉(zhuǎn)換成es5列林,轉(zhuǎn)換完成后,我們只需要轉(zhuǎn)換后的代碼酪惭,上線的時候希痴,直接把轉(zhuǎn)換后的代碼部署上線,不需要bebal了春感,上線了不需要砌创,這就是devDependencies。
而如果用了 jQuery甥厦,由于發(fā)布之后還是依賴jQuery纺铭,所以是dependencies。
總結(jié):
-S, --save 安裝包信息將加入到dependencies(生產(chǎn)階段的依賴,也就是項目運行時的依賴刀疙,就是程序上線后仍然需要依賴)
-D, --save-dev 安裝包信息將加入到devDependencies(開發(fā)階段的依賴舶赔,就是我們在開發(fā)過程中需要的依賴,只在開發(fā)階段起作業(yè)的)
補充:
正常使用npm install時谦秧,會下載dependencies和devDependencies中的模塊竟纳,當(dāng)使用npm install –production或者注明NODE_ENV變量值為production時,只會下載dependencies中的模塊疚鲤。
本篇完锥累。?