本文分享自華為雲社群《npm install -g 和 npm install --save-dev 的關係》,作者: SHQ5785。
一、npm install 本地安裝
- 將安裝包放在 ./node_modules 下(執行 npm 命令時所在的目錄),如果沒有 node_modules 目錄,會在當前執行 npm 命令的目錄下生成 node_modules 目錄。
- 可以透過 require() 來引入本地安裝包。
二、npm install -g 全域性安裝
- 將安裝包放在 /usr/local 下或者 node 的安裝目錄。
- 可以直接在命令列裡使用。
三、npm install --save
- 會把build包安裝到node_modules目錄中;
- 會在package.json的dependencies屬性下新增build;
- 之後執行npm install命令時,會自動安裝build到node_modules目錄中;
- 之後執行npm install --production或者註明NODE_ENV變數值為production時,會自動安裝msbuild到node_modules目錄中;
四、npm install --save-dev
- 會把msbuild包安裝到node_modules目錄中;
- 會在package.json的devDependencies屬性下新增msbuild;
- 之後執行npm install命令時,會自動安裝msbuild到node_modules目錄中;
- 之後執行npm install --production或者註明NODE_ENV變數值為production時,不會自動安裝msbuild到node_modules目錄中;
五、package.json 中 dependencies 與 devDependencies 的區別
- dependencies:
應用能夠正常執行所依賴的包。這種 dependencies 是最常見的,使用者在使用 npm install 安裝包時會自動安裝這些依賴。
- devDependencies:
開發應用時所依賴的工具包。通常是一些開發、測試、打包工具,例如 webpack、ESLint、Mocha。應用正常執行並不依賴於這些包,使用者在使用 npm install 安裝包時也不會安裝這些依賴。
- peerDependencies:
應用執行依賴的宿主包。最典型的就是外掛,例如各種 jQuery 外掛,這些外掛本身不包含 jQeury,需要外部提供。使用者使用 npm 1 或 2 時會自動安裝這種依賴,npm 3 不會自動安裝,會提示使用者安裝。
- bundledDependencies:
釋出包時需要打包的依賴,似乎很少見。
- optionalDependencies:
可選的依賴包。此種依賴不是程式執行所必須的,但是安裝後可能會有新功能,例如一個圖片解碼庫,安裝了 optionalDependencies 後會支援更多的格式。
那麼 package.json 檔案裡面的 devDependencies 和 dependencies 物件有什麼區別呢?
devDependencies 裡面的外掛(比如各種loader,babel全家桶及各種webpack外掛等)只用於開發環境,不用於生產環境,因此不需要打包;而 dependencies 是需要釋出到生產環境的,是要打包的。
點選關注,第一時間瞭解華為雲新鮮技術~