npm install命令詳解

  • -S,–save 安裝包信息將加到dependencies(生產階段的依賴)
npm install --save 或
npm install -S
  • -D, –save-dev 安裝包信息將加到devDependencies(開發階段的依賴),因此開發階段通常使用它
npm install --save-dev
npm install -D
  • -O, –save-optional 安裝包信息將加入到optionalDependencies(可選階段的依賴)
npm install jquery --save-optional 或
npm install jquery -O 

以安裝jquery爲例,pack.json的文件中optionalDependencies字段有如下代碼
"optionalDependencies": {
    "jquery": "^3.9.1"
}
  • -E, –save-exact 精確安裝指定模塊版本
npm install jquery --save-exact 或
npm install jquery -E

若是輸入命令爲
npm install jquery -ES

留意package.json 文件的 dependencies 字段,以看出版本號中的^消失了
"dependencies": {
    "jquery": "3.2.1"
}
  • 模塊的依賴都被寫入了package.json文件後,他人打開項目的根目錄(項目開源、內部團隊合做),使用npm install命令能夠根據dependencies配置安裝全部的依賴包
npm install
輸入該命令後,package.json的devDependencies字段裏的插件會被自動安裝到node_modules下
  • npm uninstall 卸載模塊
npm uninstall jquery --save-optional//卸載可選階段的依賴裏的jquery`

npm目前支持一下幾種依賴包管理:node

  1. depedencies
  2. devDependencies
  3. peerDependencies
  4. optionalDependencies
  5. bundledDependencies / bundleDependencies
depedencies:指定應用依賴的外部包,這些依賴是應用正常發佈後正常執行所須要的,但不包含測試時和本地打包時所使用的包

devDependencies:它裏面的包只用於開發環境,不用於生產環境,這些包一般是單元測試或者打包工具等,例如gulp, grunt, webpack, moca, coffee等

peerDependencies:同等依賴,或者叫同伴依賴,用於指定當前包(也就是你寫的包)兼容的宿主版本。如何理解呢? 試想一下,咱們編寫一個gulp的插件,而gulp卻有多個主版本,咱們只想兼容最新的版本,此時就能夠用同等依賴(peerDependencies)來指定: 
{ 
"name": "gulp-my-plugin", 
"version": "0.0.1", 
"peerDependencies": { 
"gulp": "3.x" 
} 
} 
當別人使用咱們的插件時,peerDependencies就會告訴明確告訴使用方,你須要安裝該插件哪一個宿主版本。 
一般狀況下,咱們會在一個項目裏使用一個宿主(好比gulp)的不少插件,若是相互之間存在宿主不兼容,在執行npm install時,cli會拋出錯誤信息來告訴咱們,好比:
npm ERR! peerinvalid The package gulp does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer gulp-cli-config@0.1.3 wants gulp@~3.1.9
npm ERR! peerinvalid Peer gulp-cli-users@0.1.4 wants gulp@~2.3.0

運行命令npm install gulp-my-plugin –save-dev來安裝咱們插件,咱們來看下依賴圖譜: 
├── gulp-my-plugin@0.0.1 
└── gulp@3.9.1jquery

    • optionalDependencies:可選依賴,若是有一些依賴包即便安裝失敗,項目仍然可以運行或者但願npm繼續運行,就可使用optionalDependencies。另外optionalDependencies會覆蓋dependencies中的同名依賴包,因此不要在兩個地方都寫。
    • bundledDependencies / bundleDependencies:打包依賴,bundledDependencies是一個包含依賴包名的數組對象,在發佈時會將這個對象中的包打包到最終的發佈包裏。
{
 "name": "fe-weekly",
 "description": "ELSE 週刊",
 "version": "1.0.0",
 "main": "index.js",
 "devDependencies": {
 "fw2": "^0.3.2",
 "grunt": "^1.0.1",
 "webpack": "^3.6.0"
 },
 "dependencies": {
 "gulp": "^3.9.1",
 "hello-else": "^1.0.0"
 },
 "bundledDependencies": [
 "fw2",
 "hello-else"
 ]
}
執行打包命令npm pack, 在生成的fe-weekly-1.0.0.tgz包中,將包含fw2和hello-else。 可是值得注意的是,這兩個包必須先在devDependencies或dependencies聲明過,不然打包會報錯。

 

轉:http://www.javashuo.com/article/p-xqbzhves-mx.htmlwebpack

相關文章
相關標籤/搜索