npm v7有哪些新功能?

共 2804字,需浏览 6分钟

 ·

2020-12-25 23:08

来源:https://blog.logrocket.com/whats-new-in-npm-v7/

作者:Joel Olawanle

2020年10月13日是npm CLI团队的快乐星期二,经过几个月的努力,npm CLI团队正式发布了 npm@7.0.0
npm是JavaScript的程序包管理器,它是Node.js(基于Chrome的V8 JavaScript引擎构建的异步事件驱动的JavaScript运行时)的默认程序包管理器。
这个新版本引入了一些npm CLI用户群高度要求的功能。这些特性包括工作空间(Workspaces)自动安装同级依赖项的能力,以及我将在本文中强调的其他一些特性。
要开始使用 npm v7.0.0,请在终端中运行 npm i -g npm@7
npm@7.0.0 仍然是一个非常新的东西,所以它不会破坏使用npm的数百万工作流,特别是在生产中。
因此,npm不会被标记为 latest;你的工作流默认不会得到npm v7.0.0,除非你通过运行 npm install -g npm@7 或安装Node.js 15来选择,Node.js 15是最近在 npm@7.0.0 发布后出现的。

有什么新东西?

npm 7有3个令人兴奋且期待已久的重要功能。

工作空间

这个功能已经被社区要求了很久。工作空间是npm CLI中的一组功能,它支持在一个顶级的根包中管理多个包。Yarn和Pnpm以相同的名称实现类似的功能,这一点一直存在。他们选择重用它是为了简化,以使更大的社区受益。
在npm cli中,有2个主要的实现或变化需要你去实施,以访问能够更好地管理嵌套包的特性集。
  • 让npm cli工作空间感知。
  • 在npm工作空间设置中,用户希望能够从顶层工作空间安装所有嵌套的包并执行相关的生命周期脚本。它还应该意识到相互依赖的工作空间,并适当地进行symlink(文件之间的符号链接)。

自动安装同级项依赖(peer dependencies)

在之前的版本(npm v6)中,npm默认不安装同级项依赖,取而代之的是,各个消费者不得不自己安装和管理同级项依赖关系。用户会收到一个警告,这往往被误解为一个问题。这就会被报告给软件包维护者,而维护者有时会省略同级项依赖关系,将其视为可选的依赖关系。这并没有对其版本范围或有效性进行任何检查。
此外,由于npm安装程序不支持同级依赖关系,所以当不支持同级依赖关系存在时,它设计的树会出现问题。
这个新版本(npm v7.0.0)使得自动安装同级依赖项变得很容易,而在此之前,开发人员需要手动管理和安装此类依赖项。
根据npm CLI团队的说法,新的peer依赖算法确保在node_modules树中peer-dependent的位置或上面找到有效匹配的peer依赖。
该算法解决了之前版本中与同级依赖相关的所有问题,使同级依赖成为一个一流的概念,并满足了包树有效性的要求。

Package-lock v2和对yarn.lock的支持

新的package-lock格式将释放出进行确定性可重复构建的能力,并包含了npm完全构建包树所需的一切。
现在,CLI还可以将 yarn.lock 用作软件包元数据和解决方案指南的来源。

npm 7.0.0中的重大更改

除了这3个主要的新功能外,在这个版本中还有一些突破性的变化,开发者应该知道,因为我们都知道,为了提高整体的开发者体验,一些突破性的变化是必要的。
  • 自动安装同级依赖关系的能力有可能破坏某些工作流程。
  • npm现在使用了 package.export 字段,使得不再 require() npm的内部模块。
  • npx 已经完全重写了,现在可以使用 npm exec 命令了
  • npm audit 的输出在人可读和 --json 输出方式上都有所改变。它不再使用表格来显示漏洞,vuln count也不再是将树上的每一个节点相乘。
  • 现在默认情况下,npm ls 仅显示顶级软件包
如果你想得到和 npm6 一样的输出,你现在可以使用“all”选项(即 npm ls --all)

立即获取更新

你今天就可以开始使用这个更新,运行:

npm install -g npm@7
像往常一样,你可以使用 npm -vnpm --version 来确认版本。
下面是一个例子,说明了 npm v7 如何帮助我们自动安装同级的依赖关系。
让我们安装一个与React有同级关系的依赖,看看它是如何安装的。
首先,让我们通过在CLI中运行 npm ls react 来确认我们没有依赖关系。
然后,我们现在可以继续安装我们选择的任何依赖关系,以便看到这个新功能的实现。
我想指出的另一个示例是 npx 已被重建。
以前,npx 是它自己的软件包,即使它是在安装npm时安装的。现在,它不再是一个单独的包了。它是一种内置在npm中的东西(尽管人们并不真正关心它的工作)。当你试图安装某些东西时,它会提示你,以便检查你是否真的想继续安装。
以前,你写什么命令,它就会直接去安装,不会提示你。
有趣的是,你可能不喜欢它提示你回答问题的整个想法。所以,你可以利用 -y 标志。

总结

这是自2020年4月npm作为一家公司被GitHub收购后,发布的第一个版本npm CLI。所以官方的发布信息是在GitHub的博客上。
在这篇文章中,我解释了npm v7的新功能,以及如何开始使用最新版本的npm。
我鼓励大家对这些新功能感兴趣的人开始使用npm v7。

粉丝福利

147期留言+在看幸运用户:暂无

临走前留下,今天的福利

  • 福利1:《教你玩转手机摄影,随手拍出好照片》获取资源请在公众号对话框中回复关键字:FL04,如果没有关注请扫下面的二维码
  • 福利2:在看+留言我随机抽取一位认真留言的小伙伴,给他发一个红包奖励

最近文章

- END -

点赞 + 在看 + 留言,下一个幸运儿就是你!
走心的分享更容易被抽中~

开奖时间 下期文末

浏览 79
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报