npm模塊安裝機(jī)制

npm2下的模塊安裝機(jī)制

npm2安裝多級的依賴模塊采用嵌套的安裝方式:


image.png

優(yōu)點和弊端
優(yōu)點:解決了版本單一時存在的存在的不兼容問題,實現(xiàn)多版本兼容
弊端:可能造成相同模塊大量冗余的問題,如下:


image.png

npm3下的模塊安裝機(jī)制:

1.在安裝某個二級模塊時,若發(fā)現(xiàn)第一層級還沒有相同名稱的模塊,便把這第二層級的模塊放在第一層級
2.在安裝某個二級模塊時,若發(fā)現(xiàn)第一層級有相同名稱,相同版本的模塊,便直接復(fù)用那個模塊
3.在安裝某個二級模塊時,若發(fā)現(xiàn)第一層級有相同名稱,但版本不同的模塊,便只能嵌套在自身的父模塊下方
npm3是否已經(jīng)把npm2的模塊冗余的缺陷優(yōu)化到極致了呢? ———答案是沒有,請往下看:
實際上:npm3中仍然可能出現(xiàn)模塊冗余的情況,因為一級目錄下已經(jīng)有v1.0的C模塊了,所以所有的v2.0只能作為二級依賴模塊被安裝,這樣你就會看到如下的情況:


image.png

那么這有沒有什么解決的方式呢?當(dāng)然是有的,當(dāng)A模塊下的C v1.0模塊被更新至C v2.0的前提下,我們可以通過npm dedupe把所有C v2.0的二級依賴模塊“重定向”到一級目錄下的那個C v1.0。
雖然 npm v3 解決了目錄長度的嵌套過深,相同的依賴存儲多份這兩個問題,但是此時的 npm 仍然存在諸多問題,被人詬病最多的應(yīng)該就是它的不確定性了。

npm v5

什么是確定性。在 JavaScript 包管理的背景下,確定性是指在給定的 package.json 和 lock 文件下始終能得到一致的 node_modules 目錄結(jié)構(gòu)。簡單點說就是無論在何種環(huán)境下執(zhí)行 npm install 都能得到相同的 node_modules 目錄結(jié)構(gòu)。npm v5 正是為解決這個問題而產(chǎn)生的,npm v5 生成的 node_modules 目錄和 v3 是一致的,區(qū)別是 v5 會默認(rèn)生成一個 package-lock.json 文件,來保證安裝的依賴的確定性。
package-lock.json 文件里記錄了安裝的每一個依賴的確定版本,這樣在下次安裝時就能通過這個文件來安裝一樣的依賴了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 作者: 阮一峰原文地址:http://www.ruanyifeng.com/blog/2016/01/npm-in...
    IT程序獅閱讀 904評論 0 6
  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,696評論 0 13
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評論 25 708
  • 一讀完這本書后,對你有什么啟發(fā)? 我個人認(rèn)為這是一本非常值得讀的書,它告訴了我們不離不棄,堅持信念,克服困難,最終...
    張立夏物華天寶人杰地靈閱讀 189評論 0 0
  • 跟一位一起短暫工作過的伙伴度過了一個下午去了她的高中母校與她逛著書店與精品店在甜品店吃好看的榴蓮班戟還有現(xiàn)烤的黑椒...
    拒擁閱讀 242評論 0 0

友情鏈接更多精彩內(nèi)容