1.表面的區(qū)別
- --save: 把依賴包名稱添加到 package.json 文件 dependencies 鍵下
- --save-dev: 把依賴包名稱添加到 package.json 文件 devDependencies 鍵下
2.真正的區(qū)別
- –save : 安裝生產(chǎn)環(huán)境需要的依賴包
- –save-dev: 安裝開(kāi)發(fā)環(huán)境需要的依賴包
npm自己的文檔說(shuō)dependencies是運(yùn)行時(shí)依賴,devDependencies是開(kāi)發(fā)時(shí)的依賴。
即devDependencies 下列出的模塊,是我們開(kāi)發(fā)時(shí)用的,比如 我們安裝 js的壓縮包gulp-uglify 時(shí),我們采用的是 “npm install –save-dev gulp-uglify ”命令安裝,因?yàn)槲覀冊(cè)诎l(fā)布后用不到它,而只是在我們開(kāi)發(fā)才用到它。
dependencies 下的模塊,則是我們發(fā)布后還需要依賴的模塊,譬如像jQuery庫(kù)或者Angular框架類似的,我們?cè)陂_(kāi)發(fā)完后后肯定還要依賴它們,否則就運(yùn)行不了。
比如,你寫 ES6 代碼,如果你想編譯成 ES5 發(fā)布那么 babel 就是devDependencies。
如果你用了 jQuery,由于發(fā)布之后還是依賴jQuery,所以是dependencies。
3.補(bǔ)充
正常使用npm install時(shí),會(huì)下載dependencies和devDependencies中的模塊,當(dāng)使用npm install –production或者注明NODE_ENV變量值為production時(shí),只會(huì)下載dependencies中的模塊。
# i 是 install 的簡(jiǎn)寫
# ' => ' 表示'等價(jià)于'的意思
# 寫入到 dependencies 對(duì)象; -S 是 --save 的簡(jiǎn)寫;
npm i module_name -S => npm install module_name --save
# 寫入到 devDependencies 對(duì)象; -D 是 --save-dev 的簡(jiǎn)寫
npm i module_name -D => npm install module_name --save-dev
# 全局安裝
npm i module_name -g