npm 更新 update

2021-10-29 10:52 更新

更新包

概要

npm update [-g] [<pkg>...]


aliases: up, upgrade

詳情

此命令會將列出的所有包更新為最新版本(由tag配置指定),尊重包及其依賴項的 semver 約束(如果它們也需要相同的包)。

它還將安裝缺少的軟件包。

如果-g指定了標志,此命令將更新全局安裝的包。

如果未指定包名稱,則將更新指定位置(全局或本地)中的所有包。

實例

對于下面的示例,假設當前包是app并且它依賴于依賴項dep1(?dep2, .. 等)。已發(fā)布的版本dep1有:

{
  "dist-tags": { "latest": "1.2.2" },
  "versions": [
    "1.2.2",
    "1.2.1",
    "1.2.0",
    "1.1.2",
    "1.1.1",
    "1.0.0",
    "0.4.1",
    "0.4.0",
    "0.2.0"
  ]
}

插入符號依賴項

如果apppackage.json包含:

"dependencies": {
  "dep1": "^1.1.1"
}

然后npm update就會安裝dep1@1.2.2,因為1.2.2latest并且?1.2.2滿足^1.1.1。

波浪號依賴項

但是,如果apppackage.json包含:

"dependencies": {
  "dep1": "~1.1.1"
}

在這種情況下,運行npm update將安裝dep1@1.1.2.?即使latest?標記指向1.2.2,此版本也不滿足~1.1.1,相當于>=1.1.1 <1.2.0。所以~1.1.1使用滿足的最高排序版本,即1.1.2.

低于 1.0.0 的插入符號依賴項

假設app對下面的版本有插入符號依賴1.0.0,例如:

"dependencies": {
  "dep1": "^0.2.0"
}

npm update將安裝dep1@0.2.0,因為沒有其他版本滿足^0.2.0. 如果依賴于^0.4.0

"dependencies": {
  "dep1": "^0.4.0"
}

然后npm update會安裝dep1@0.4.1,因為那是滿足^0.4.0(?>= 0.4.0 <0.5.0)的最高排序版本

子依賴

假設你的應用現在也依賴于 dep2:

{
  "name": "my-app",
  "dependencies": {
      "dep1": "^1.0.0",
      "dep2": "1.0.0"
  }
}

并且 dep2 本身取決于 dep1 這個有限的范圍:

{
"name": "dep2",
  "dependencies": {
    "dep1": "~1.1.1"
  }
}

然后使用npm update將安裝dep1@1.1.2,因為這是dep2允許的最高版本。當單個版本可以滿足樹中多個依賴項的 semver 要求時,npm 將優(yōu)先考慮樹中的單個版本的 dep1 而不是兩個。在這種情況下,如果你確實需要你的包使用較新版本,則需要使用npm install.

更新全局安裝的軟件包

npm update -gupdate操作應用于每個全局安裝的包outdated- 也就是說,具有不同于?latest.

注意:全局安裝的包被視為安裝時制定了插入符號范圍。因此,如果你需要更新到 lastest 你可能需要運行 npm install -g [<pkg>...]。

注意:如果軟件包已升級到比 更新的版本latest,它將被降級。

配置

global 全局

  • 默認值:false
  • 類型:Boolean

global 模式下運行,以便將包安裝到prefix?文件夾而不是當前工作目錄中。有關行為差異的更多信息,請參閱[文件夾]()。

  • 軟件包安裝到{prefix}/lib/node_modules文件夾中,而不是當前工作目錄中。
  • bin 文件鏈接到?{prefix}/bin
  • 手冊頁鏈接到?{prefix}/share/man

global-style 全局風格

  • 默認值:false
  • 類型:Boolean

使 npm 以node_modules與全局node_modules文件夾相同的布局將包安裝到本地文件夾中。只有您的直接依賴項會顯示在其中,node_modules并且它們所依賴的所有內容都將在其node_modules文件夾中展平。這顯然會消除一些重復數據刪除。如果與 一起使用legacy-bundling,legacy-bundling?將是首選。

legacy-bundling

  • 默認值:false
  • 類型:Boolean

使 npm 安裝包,以便 1.4 之前的 npm 版本,例如 node 0.8 中包含的版本,可以安裝該包。這消除了所有自動重復數據刪除。如果與global-style此選項一起使用將是首選。

strict-peer-deps 嚴格對等依賴

  • 默認值:false
  • 類型:Boolean

如果設置為true,并且--legacy-peer-deps未設置,則任何?沖突peerDependencies都將被視為安裝失敗,即使 npm 可以根據非對等依賴關系合理猜測適當的解決方案。

默認情況下,peerDependencies依賴關系圖中的深層沖突將使用最近的非對等依賴項規(guī)范來解決,即使這樣做會導致某些包接收在其包peerDependencies對象中設置的范圍之外的對等依賴項。

當執(zhí)行此類和覆蓋時,會打印警告,解釋沖突和所涉及的包。如果--strict-peer-deps設置,則此警告被視為失敗。

package-lock 包鎖

  • 默認值:true
  • 類型:Boolean

如果設置為 false,則package-lock.json在安裝時忽略文件。如果為真,這也將阻止寫入?。package-lock.json``save

當包包鎖被禁用時,無關模塊的自動修剪也將被禁用。要刪除禁用包鎖的無關模塊,請使用npm prune.

omit 忽略

  • 默認值:如果NODE_ENV環(huán)境變量設置為 'production',則為'dev?',否則為空。
  • 類型:“dev”、“optional”或“peer”(可多次設置)

要從磁盤上的安裝樹中省略的依賴項類型。

請注意,這些依賴的仍然解決,加入?package-lock.jsonnpm-shrinkwrap.json文件。它們只是沒有物理安裝在磁盤上。

如果包類型同時出現在--include--omit列表中,則它將被包含在內。

如果生成的省略列表包含'dev',則NODE_ENV環(huán)境變量將被設置'production'為所有生命周期腳本。

ignore-scripts 忽略腳本

  • 默認值:false
  • 類型:Boolean

如果為 true,則 npm 不會運行 package.json 文件中指定的腳本。

請注意,明確用于運行特定腳本的命令,例如?npm start,?npm stop,?npm restart,?npm test, 并且npm run-script?如果ignore-scripts已設置仍將運行其預期腳本,但它們不會運行任何前置或后置腳本。

audit 審計

  • 默認值:true
  • 類型:Boolean

當為“true”時,將審計報告與當前 npm 命令一起提交到默認注冊表和為范圍配置的所有注冊表。有關npm audit提交內容的詳細信息,請參閱文檔。

bin-links

  • 默認值:true
  • 類型:Boolean

告訴 npm.cmd為包可執(zhí)行文件創(chuàng)建符號鏈接(或Windows 上的墊片)。

設置為 false 使其不這樣做。這可以用來解決一些文件系統(tǒng)不支持符號鏈接的事實,即使在表面上是 Unix 系統(tǒng)上。

fund

  • 默認值:true
  • 類型:Boolean

當“true”在每個結尾處顯示消息時,npm install?確認正在尋找資金的依賴項的數量。詳情請參閱npm fund

dry-run 試運行

  • 默認值:false
  • 類型:Boolean

表示您不希望 npm 進行任何更改并且它應該只報告它會做的事情。這可以被傳遞到任何修改本地安裝,例如,命令的installupdate,?dedupe,uninstall,以及packpublish。 注意:這不是由其他網絡相關的命令,如兌現dist-tags,?owner等等。

workspace 工作區(qū)

  • 默認值:
  • 類型:String(可多次設置)

允許在當前項目的一配置工作區(qū)的上下文中運行命令,同時通過僅運行此配置選項定義的工作區(qū)進行過濾。

workspace配置的有效值為:

  • 工作區(qū)名稱
  • 工作區(qū)目錄的路徑
  • 父工作區(qū)目錄的路徑(將導致選擇所有嵌套工作區(qū))

為該 npm init 命令設置時,可以將其設置為尚不存在的工作區(qū)的文件,以創(chuàng)建該文件夾并將其設置為項目中的全新工作區(qū)。

此值不會到處到子進程的環(huán)境中。

workspaces 工作區(qū)

  • 默認值:false
  • 類型:Boolean

啟用在所有已配置工作區(qū)的上下文中運行命令。

此值不會導出到子進程的環(huán)境中。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號