本文分享自華為雲社區《npm install -g 和 npm install --save-dev 的關係》,作者: SHQ5785。 一、npm install 本地安裝 將安裝包放在 ./node_modules 下(運行 npm 命令時所在的目錄),如果沒有 node_modules 目錄, ...
本文分享自華為雲社區《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 是需要發佈到生產環境的,是要打包的。