2017-08-29 22 views
0

在我的當前項目,我們有我們的package.json文件與確切版本(例如babel-core: '6.5.2'上市的依賴。NPM的lockfiles不處理傳遞依賴正確

但是在最近的項目構建(其中包括在構建機上運行npm install某些節點模塊已更新並且我們的工件被破壞。

研究表明,儘管我們有package.json文件中提到的確切版本,但所需的模塊可能依賴於其自身的依賴性,並且它們都使用插入符號依賴關係。在我們的情況下,它似乎是

  • babel-core: '6.5.2'取決於
  • babel-register: '^6.16.0'取決於
  • babel-core: '^6.9.0'解決的(因爲caret range rulesbabel-core: '6.26.0'

和指定babel-core版本打破了我們的基礎之上。

我們已經嘗試創建package-lock.json文件,以防止這些傳遞依賴性被解決,他們的解決。

但是,正如the documentationpackage-lock文件規定:

只要您運行NPM安裝,NPM生成或更新你的包鎖

就這樣,所有的軟件包依賴於babel-core與插入符號版本用不正確的模塊版本解決。

package-lock.json文件左看右看後,我看不出它的價值變化,因爲的

  1. 的滾雪球效應 - 改變一個依賴性要求改變所有其它的,這取決於它(這是遞歸的過程)

  2. 覈實你即將改變其散列(爲integrity領域的版本都存在的必要性)

的問題是:如何安裝所有的模塊,在我package.json文件中提到的確切版本,防止NPM解決它再次爲不同的版本?

回答