首先复旬,查閱npm官方文檔可知,
npm
命令行有多種寫法:
npm install (with no args, in package dir)
npm install [<@scope>/]<name>
npm install [<@scope>/]<name>@<tag>
npm install [<@scope>/]<name>@<version>
npm install [<@scope>/]<name>@<version range>
npm install <git-host>:<git-user>/<repo-name>
npm install <git repo url>
npm install <tarball file>
npm install <tarball url>
npm install <folder>
alias: npm i
common options: [-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--no-save] [--dry-run]
這里我們只談我常用的幾種,首先對于標(biāo)題中的幾種命令冲泥,其實只是
全稱
與簡寫
的區(qū)別
-
npm install packagename --save
等價于npm install packagename -S
-
npm install packagename --save-dev
等價于npm install packagename -D
-
npm install packagename --global
等價于npm install packagename -g
至于這個
npm install packagename
,也就是最后不加參數(shù)的寫法驹碍,我以前也沒注意,今天忽然想起來凡恍,百度了一下志秃,文章千篇一律,具體問題下面會講到嚼酝。
npm install packagename -g
會將依賴包下載到全局浮还,至于全局是哪個位置,就要看你的npm
安裝路徑闽巩,一般全局包是在npm
安裝路徑下的node_modules
文件夾內(nèi)钧舌,當(dāng)然你也可以自己修改npm全局包
的安裝位置
npm install packagename --save/-S
會將包下載到項目根目錄下的node_modules
內(nèi),并添加在依賴文件package.json
中的dependencies
屬性下涎跨,屬于生產(chǎn)環(huán)境依賴
洼冻,也就是項目運行必須的依賴,沒有它隅很,項目就無法運行撞牢,例如常用的vue-router
、vuex
叔营,這些依賴在項目最后打包時屋彪,會被打包
進(jìn)項目代碼。
npm install packagename --save-dev/-D
會將包下載到項目根目錄下的node_modules
內(nèi)绒尊,并添加在依賴文件package.json
中的devDependencies
屬性下畜挥,屬于開發(fā)環(huán)境依賴
,只在開發(fā)項目時需要婴谱,例如ES6
轉(zhuǎn)ES5
的插件蟹但,
在寫項目是躯泰,為了兼容,開發(fā)時使用ES6
語法編寫矮湘,在npm run dev
編譯是斟冕,由插件編譯為ES5
語法口糕,每改動一次代碼缅阳,就要重新編譯一次,而當(dāng)我們項目寫完的時候景描,代碼暫時不再改動十办,執(zhí)行npm run build
指令,再次將ES6
語法的代碼編譯為ES5
代碼超棺,然后放到服務(wù)器上向族,服務(wù)器上運行的ES5
語法的代碼,瀏覽器基本都可以兼容了棠绘,此時ES6
轉(zhuǎn)ES5
插件的使命也就完成了件相,所以開發(fā)環(huán)境依賴
在項目最后打包時,不會被打包
進(jìn)項目代碼氧苍。
npm install packagename
會將包下載到項目根目錄下的node_modules
內(nèi)夜矗,但是會不會添加到package.json
中呢,當(dāng)時正在看一個視頻让虐,視頻中npm install vuex
后紊撕,vuex
被添加到了生產(chǎn)環(huán)境依賴
,而我百度搜索相關(guān)文章后赡突,基本前片一律对扶,說這種寫法只會把包下載到項目下node_modules
下,不會修改package.json
,我就陷入了沉思惭缰,在QQ群里問了一下之后浪南,有大佬說,這是因為npm
版本的問題漱受,以前的老版本逞泄,確實不會修改package.json
,而從npm5.0.0開始
會,我又一頓搜索查找拜效,終于在npm
的github
倉庫翻到了npm5.0.0
版本的更新日志
大致意思就是喷众,
--save
不再是必須的,可以不寫紧憾,此時默認(rèn)就是--save
,也就是添加到生產(chǎn)環(huán)境依賴