npm模塊安裝機(jī)制

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

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


image.png

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


image.png

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

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


image.png

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

npm v5

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

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

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

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

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