轉(zhuǎn)載備注:
原文作者:暗夜余暉
原文出處: NPM install -save 和 -save-dev 傻傻分不清
回顧 npm install 命令
最近在寫(xiě) Node 程序的時(shí)候,突然對(duì) npm install 的 - save 和 - save-dev 這兩個(gè)參數(shù)的使用比較混亂。其實(shí)博主在這之前對(duì)這兩個(gè)參數(shù)的理解也是模糊的,各種查資料和實(shí)踐后對(duì)它們之間的異同點(diǎn)略有理解。遂寫(xiě)下這篇文章避免自己忘記,同時(shí)也給 node 猿友一點(diǎn)指引。
我們?cè)谑褂?npm install 安裝模塊的模塊的時(shí)候 ,一般會(huì)使用下面這幾種命令形式:
| 命令 | 理解 |
|---|---|
npm install moduleName |
安裝模塊到項(xiàng)目目錄下 |
npm install -g moduleName |
-g 的意思是將模塊安裝到全局,具體安裝到磁盤(pán)哪個(gè)位置,要看 npm config prefix 的位置。 |
npm install -save moduleName |
-save 的意思是將模塊安裝到項(xiàng)目目錄下,并在package文件的dependencies節(jié)點(diǎn)寫(xiě)入依賴(lài)。 |
npm install -save-dev moduleName |
-save-dev 的意思是將模塊安裝到項(xiàng)目目錄下,并在package文件的devDependencies節(jié)點(diǎn)寫(xiě)入依賴(lài)。 |
那么問(wèn)題來(lái)了,在項(xiàng)目中我們應(yīng)該使用四個(gè)命令中的哪個(gè)呢?這個(gè)就要視情況而定了。下面對(duì)這四個(gè)命令進(jìn)行對(duì)比,看完后你就不再這么問(wèn)了。
npm install moduleName 命令
1. 安裝模塊到項(xiàng)目 node_modules 目錄下。
2. 不會(huì)將模塊依賴(lài)寫(xiě)入 devDependencies 或 dependencies 節(jié)點(diǎn)。
3. 運(yùn)行 npm install 初始化項(xiàng)目時(shí)不會(huì)下載模塊。
npm install -g moduleName 命令
1. 安裝模塊到全局,不會(huì)在項(xiàng)目 node_modules 目錄中保存模塊包。
2. 不會(huì)將模塊依賴(lài)寫(xiě)入 devDependencies 或 dependencies 節(jié)點(diǎn)。
3. 運(yùn)行 npm install 初始化項(xiàng)目時(shí)不會(huì)下載模塊。
npm install -save moduleName 命令
1. 安裝模塊到項(xiàng)目 node_modules 目錄下。
2. 會(huì)將模塊依賴(lài)寫(xiě)入 dependencies 節(jié)點(diǎn)。
3. 運(yùn)行 npm install 初始化項(xiàng)目時(shí),會(huì)將模塊下載到項(xiàng)目目錄下。
4. 運(yùn)行 npm install --production 或者注明 NODE_ENV 變量值為 production 時(shí),會(huì)自動(dòng)下載模塊到 node_modules 目錄中。
npm install -save-dev moduleName 命令
1. 安裝模塊到項(xiàng)目 node_modules 目錄下。
2. 會(huì)將模塊依賴(lài)寫(xiě)入 devDependencies 節(jié)點(diǎn)。
3. 運(yùn)行 npm install 初始化項(xiàng)目時(shí),會(huì)將模塊下載到項(xiàng)目目錄下。
4. 運(yùn)行 npm install --production 或者注明 NODE_ENV 變量值為 production 時(shí),不會(huì)自動(dòng)下載模塊到 node_modules 目錄中。
總結(jié)
devDependencies 節(jié)點(diǎn)下的模塊是我們?cè)陂_(kāi)發(fā)時(shí)需要用的,比如項(xiàng)目中使用的 gulp ,壓縮 css、js 的模塊。這些模塊在我們的項(xiàng)目部署后是不需要的,所以我們可以使用 -save-dev 的形式安裝。像 express 這些模塊是項(xiàng)目運(yùn)行必備的,應(yīng)該安裝在 dependencies 節(jié)點(diǎn)下,所以我們應(yīng)該使用 -save 的形式安裝。