一文了解npm install -g和npm install --save-dev的關係

华为云开发者联盟發表於2024-05-21

本文分享自華為雲社群《npm install -g 和 npm install --save-dev 的關係》,作者: SHQ5785。

一、npm install 本地安裝

  1. 將安裝包放在 ./node_modules 下(執行 npm 命令時所在的目錄),如果沒有 node_modules 目錄,會在當前執行 npm 命令的目錄下生成 node_modules 目錄。
  2. 可以透過 require() 來引入本地安裝包。

二、npm install -g 全域性安裝

  1. 將安裝包放在 /usr/local 下或者 node 的安裝目錄。
  2. 可以直接在命令列裡使用。

三、npm install --save

  1. 會把build包安裝到node_modules目錄中;
  2. 會在package.json的dependencies屬性下新增build;
  3. 之後執行npm install命令時,會自動安裝build到node_modules目錄中;
  4. 之後執行npm install --production或者註明NODE_ENV變數值為production時,會自動安裝msbuild到node_modules目錄中;

四、npm install --save-dev

  1. 會把msbuild包安裝到node_modules目錄中;
  2. 會在package.json的devDependencies屬性下新增msbuild;
  3. 之後執行npm install命令時,會自動安裝msbuild到node_modules目錄中;
  4. 之後執行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 是需要釋出到生產環境的,是要打包的。

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章