很难相信,11年前, JavaScript
社区还没有 npm
。快进到今天,npm
现在拥有数百万的开发人员和 130
万个软件包,每月下载 75B
。
npm v7.0.0
与 Node.js 15.0.0
一起发布,如果你想立即尝试,可以运行 npm i -g npm@7
进行安装。
令人兴奋的新功能
npm 7带有一些期待已久的功能,其中包括:
Workspaces
:npm CLI
的一组功能,可支持从单个顶级软件包中管理多个软件包自动安装
peerDependencies
:在npm 7
之前,开发人员需要自己管理和安装peerDependencies
。新的peer dependencies
可确保在node_modules
树中peerDependencies
的位置处或之上找到有效匹配的peerDependencies
。package-lock v2
和对yarn.lock
的支持:新的package-lock
格式将释放确定性可复制构建的功能,并且包括npm
完全构建软件包树所需的一切。在忽略npm 7
的yarn.lock
文件之前,npm cli
现在可以将yarn.lock
用作软件包元数据和分辨率指南的来源。
旧的又是新的
npm
的内部结构已得到重大重构。在分离关注点方面已经付出了巨大的努力。例如,对 node_modules
树的检查和管理已移至 Arborist
模块 。你可以在 npmjs
博客上中了解有关 Arborist
的信息。
这些内部更改将确保 npm
代码库随着时间的推移更加可靠并且易于维护。更少的错误和更快的迭代周期,我们将能够比以往更快地将更新交付给 npm
。
我们已经使用 Node.js
测试套件 CITGM
对 npm 7.0.0
进行了测试,并且很高兴地报告说,尽管内部有巨大的变化,当 npm 7
和 npm 6
对 120+
高度依赖的模块运行时,没有新的模块会失败!
重大变化
尽管对 npm
内部进行了大修,但团队仍在不懈地努力,以确保对大多数工作流的干扰最小。也就是说,必须进行一些重大更改才能改善总体开发人员体验。npm 7.0.0中
的重大更改包括:
自动安装
peer dependencies
(虽然我们认为此功能是理想的新行为,但它确实有可能破坏某些工作流程)。npm
使用package.exports
字段,因此能再使用require()
npm 的内部模块。npx
已完全重写为npm exec
命令。功能上有很多更改,最明显的是,如果你试图运行的模块尚未安装,会出现提示。npm audit
在--json
的可读性和输出样式方面都发生了重大变化 。
下一步是什么
npm 7
是一个很大的变化,我们要格外小心,以免破坏使用 npm
的数百万个工作流程,尤其是在生产环境中。因此,我们将从 Node.js
中选取一个页面,并逐步发布该版本。
npm 7.0.0
不会被标记为 latest
; 除非你通过运行 npm install -g npm@7
或安装 Node.js 15
进行选择,否则默认情况下,你的工作流将不会获得 npm v7.0.0
。
尽管我们有信心该版本可以每天使用,但我们希望更多地用于生产环境,以获取你的反馈和错误报告。当我们确定 npm 7
符合要包含在 Node.js LTS
发行版中的标准时,我们将发行版发布为 latest
。
我们还将继续通过新功能来改进 npm CLI
,包括 Workspaces
和 包覆盖
。如果你对 npm CLI
的功能有任何想法,请查看我们的 RFC
库(https://github.com/npm/rfcs
)并打开一个 issue
!
了解更多:https://github.blog/2020-10-13-presenting-v7-0-0-of-the-npm-cli/
关注公众号【前端宇宙】,每日获取好文推荐
添加微信,入群交流
“在看和转发”就是最大的支持