npm v7.0.0 發(fā)布 - 帶來(lái)數(shù)個(gè)重大更新

很難相信,11年前, JavaScript 社區(qū)還沒(méi)有 npm 。快進(jìn)到今天,npm 現(xiàn)在擁有數(shù)百萬(wàn)的開(kāi)發(fā)人員和 130 萬(wàn)個(gè)軟件包,每月下載 75B。
npm v7.0.0?與 Node.js 15.0.0 一起發(fā)布,如果你想立即嘗試,可以運(yùn)行 npm i -g npm@7 進(jìn)行安裝。
令人興奮的新功能
npm 7帶有一些期待已久的功能,其中包括:
Workspaces:npm CLI的一組功能,可支持從單個(gè)頂級(jí)軟件包中管理多個(gè)軟件包自動(dòng)安裝 peerDependencies:在npm 7之前,開(kāi)發(fā)人員需要自己管理和安裝peerDependencies。新的peer dependencies可確保在node_modules樹(shù)中peerDependencies的位置處或之上找到有效匹配的peerDependencies。package-lock v2和對(duì)yarn.lock的支持:新的package-lock格式將釋放確定性可復(fù)制構(gòu)建的功能,并且包括npm完全構(gòu)建軟件包樹(shù)所需的一切。在忽略npm 7的yarn.lock文件之前,npm cli現(xiàn)在可以將yarn.lock用作軟件包元數(shù)據(jù)和分辨率指南的來(lái)源。
舊的又是新的
npm 的內(nèi)部結(jié)構(gòu)已得到重大重構(gòu)。在分離關(guān)注點(diǎn)方面已經(jīng)付出了巨大的努力。例如,對(duì) node_modules 樹(shù)的檢查和管理已移至 Arborist 模塊 。你可以在 npmjs 博客上中了解有關(guān) Arborist 的信息。
這些內(nèi)部更改將確保 npm 代碼庫(kù)隨著時(shí)間的推移更加可靠并且易于維護(hù)。更少的錯(cuò)誤和更快的迭代周期,我們將能夠比以往更快地將更新交付給 npm 。
我們已經(jīng)使用 Node.js 測(cè)試套件 CITGM 對(duì) npm 7.0.0 進(jìn)行了測(cè)試,并且很高興地報(bào)告說(shuō),盡管內(nèi)部有巨大的變化,當(dāng) npm 7 和 npm 6 對(duì) 120+ 高度依賴(lài)的模塊運(yùn)行時(shí),沒(méi)有新的模塊會(huì)失敗!
重大變化
盡管對(duì) npm 內(nèi)部進(jìn)行了大修,但團(tuán)隊(duì)仍在不懈地努力,以確保對(duì)大多數(shù)工作流的干擾最小。也就是說(shuō),必須進(jìn)行一些重大更改才能改善總體開(kāi)發(fā)人員體驗(yàn)。npm 7.0.0中 的重大更改包括:
自動(dòng)安裝 peer dependencies(雖然我們認(rèn)為此功能是理想的新行為,但它確實(shí)有可能破壞某些工作流程)。npm使用package.exports字段,因此能再使用require()npm 的內(nèi)部模塊。npx已完全重寫(xiě)為npm exec命令。功能上有很多更改,最明顯的是,如果你試圖運(yùn)行的模塊尚未安裝,會(huì)出現(xiàn)提示。npm audit在--json的可讀性和輸出樣式方面都發(fā)生了重大變化 。
下一步是什么
npm 7 是一個(gè)很大的變化,我們要格外小心,以免破壞使用 npm 的數(shù)百萬(wàn)個(gè)工作流程,尤其是在生產(chǎn)環(huán)境中。因此,我們將從 Node.js 中選取一個(gè)頁(yè)面,并逐步發(fā)布該版本。
npm 7.0.0 不會(huì)被標(biāo)記為 latest; 除非你通過(guò)運(yùn)行 npm install -g npm@7 或安裝 Node.js 15 進(jìn)行選擇,否則默認(rèn)情況下,你的工作流將不會(huì)獲得 npm v7.0.0。
盡管我們有信心該版本可以每天使用,但我們希望更多地用于生產(chǎn)環(huán)境,以獲取你的反饋和錯(cuò)誤報(bào)告。當(dāng)我們確定 npm 7 符合要包含在 Node.js LTS 發(fā)行版中的標(biāo)準(zhǔn)時(shí),我們將發(fā)行版發(fā)布為 latest。
我們還將繼續(xù)通過(guò)新功能來(lái)改進(jìn) npm CLI,包括 Workspaces 和 包覆蓋。如果你對(duì) npm CLI 的功能有任何想法,請(qǐng)查看我們的 RFC 庫(kù)(https://github.com/npm/rfcs)并打開(kāi)一個(gè) issue!
了解更多:https://github.blog/2020-10-13-presenting-v7-0-0-of-the-npm-cli/
關(guān)注公眾號(hào)【前端宇宙】,每日獲取好文推薦 添加微信,入群交流
