在我的當前項目,我們有我們的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 rules)babel-core: '6.26.0'
和指定babel-core
版本打破了我們的基礎之上。
我們已經嘗試創建package-lock.json
文件,以防止這些傳遞依賴性被解決,他們的被解決。
但是,正如the documentation上package-lock
文件規定:
只要您運行NPM安裝,NPM生成或更新你的包鎖
就這樣,所有的軟件包依賴於babel-core
與插入符號版本用不正確的模塊版本解決。
在package-lock.json
文件左看右看後,我看不出它的價值變化,因爲的
的滾雪球效應 - 改變一個依賴性要求改變所有其它的,這取決於它(這是遞歸的過程)
覈實你即將改變和其散列(爲
integrity
領域的版本都存在的必要性)
的問題是:如何安裝所有的模塊,在我package.json
文件中提到的確切版本,防止NPM解決它再次爲不同的版本?