npm v7有哪些新功能?

2020年12月30日11:24:51 发表评论 47 次浏览

本文概述

2020年10月13日是周二快乐发布正式发布的npm CLI团队npm@7.0.0经过几个月的努力。

npm是JavaScript的程序包管理器, 它是Node.js(基于Chrome的V8 JavaScript引擎构建的异步事件驱动的JavaScript运行时)的默认程序包管理器。

这个新版本引入了npm CLI用户库中一些非常需要的功能。

这些功能包括工作区, 的能力自动安装对等依赖性, 以及本文将重点介绍的其他一些功能。

开始使用npm v7.0.0, 跑npm i -g npm @ 7在你的终端中。

npm@7.0.0还是很新的东西, 因此它不会中断使用npm的数百万个工作流程, 尤其是在生产环境中。

因此, npm不会被标记为最新;除非你通过运行选择加入, 否则默认情况下, 你的工作流将不会获得npm v7.0.0npm install -g npm @ 7或安装Node.js 15, 该版本最近发布后就出现了npm@7.0.0.

什么是新的?

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

工作空间

社区要求此功能已有很长时间。工作区是npm CLI中的一组功能, 可支持在单个顶级根包中管理多个包。 Yarn和Pnpm都以相同的名称实现了相似的功能, 因此这一直存在。为了简单起见, 他们选择重用它以使所涉及的更大社区受益。

有2个主要的实现或更改, npm cli你需要将其放置在适当的位置才能访问功能集, 以更好地管理嵌套包。

我们为制作了一个自定义演示.
不完全是。点击这里查看.

npm v7有哪些新功能?1
  • 使npm cli工作区感知。
  • 在npm工作区设置中, 用户希望能够安装所有嵌套的程序包并从顶层工作区执行关联的生命周期脚本。还应该意识到工作空间相互依赖并且使用符号链接(A符号链接文件之间)。

你可以阅读有关npm工作区的更多信息这里.

自动安装对等项依赖

在以前的版本中(npm v6), 默认情况下, npm未安装对等依赖项。相反, 单个使用者必须自己安装和管理对等依赖性。警告会提示用户, 而警告通常被误解为问题。然后, 将其报告给软件包维护者, 作为响应, 他们有时会忽略对等项依赖关系, 而是将其有效地视为可选的依赖项。这没有对其版本范围或有效性进行任何检查。

此外, 由于npm installer不支持对等依赖项, 因此它可以设计一个树, 当存在对等依赖项时会导致问题。

此新版本, (npm v7.0.0), 现在很容易自动安装对等依赖性, 而开发人员则需要手动管理和安装此类依赖项。

根据npm CLI团队的说法, 新的对等项依赖算法可确保在node_modules树中的对等项依赖位置处或之上找到有效匹配的对等项依赖关系。

该提议的算法解决了先前版本中与对等方依赖关系相关的所有问题, 使对等方依赖关系成为头等概念, 也是对程序包树有效性的要求。

你可以阅读有关安装对等依赖项的更多信息这里.

包锁v2和对yarn.lock的支持

新的程序包锁定格式将释放确定性可重复生成的功能, 其中包括npm完全构建程序包树所需的一切。

CLI现在也可以使用纱锁作为软件包元数据和解决方案指南的来源。

你可以阅读更多这里.

npm 7.0.0中的重大更改

除了这3个主要的新功能, 还有一些重大变化在这个版本中, 开发人员应该知道, 众所周知, 必须进行一些重大更改才能改善总体开发人员体验。

  • 自动安装对等依赖性的能力有可能破坏某些工作流程
  • npm现在利用package.exports字段, 从而不再可能要求()npm的内部模块。
  • 像素已经被完全重写, 现在可以利用npm执行命令
  • 输出npm审核已经改变了人类可读和--json输出样式。它不再使用表来显示漏洞, 并且漏洞数量不再乘以树中的每个节点
  • npm ls现在将默认仅显示顶级软件包
我们的项目目录。

如果你想获得与输出相同的输出npm6你现在可以使用"全部"选项(即npm ls --all)

你可以在npm 7.0.0中阅读有关重大更改的更多信息。这里.

立即获取更新

你可以通过运行以下命令开始使用此更新:

npm install -g npm@7

与往常一样, 你可以使用以下任一方式确认版本npm -vornpm --version.

注意:即使在安装最新版本后, 也可以通过在" @"后面添加版本号(即npm install -g npm @ <version-number>)来轻松切换回npm的先前版本。

以下是说明如何npm v7帮助我们自动安装对等依赖性。

让我们安装一个与React有对等依赖关系的依赖关系, 并查看如何安装它。

首先, 让我们通过运行来确认我们没有依赖性npm ls反应在CLI中。

在我们的终端中运行NPM CLI命令的示例。

然后, 我们现在可以继续安装我们选择的任何依赖项, 以查看正在实现的新功能。

我们的依赖安装方法。

我想指出的另一个例子是像素已重建。

先前, 像素是它自己的软件包, 即使它是在安装npm时安装的。现在, 它不再是单独的软件包了。它是npm内置的(尽管只要它起作用, 人们并不在乎)。当你尝试安装某些内容时, 它会提示你以检查你是否确实要继续安装。

警告提示我们查看是否要继续进行安装。

在此之前, 它会继续安装你编写的任何命令, 而不会提示你。

有趣的是, 你可能不喜欢提示你回答问题的整个想法。因此, 你可以利用-y旗。

y标志。

总结

自2020年4月GitHub收购npm公司以来, 这是npm CLI的第一个版本。这就是为什么官方发布信息在GitHub博客上的原因。

在本文中, 我解释了npm v7的新功能, 以及如何开始使用最新版本的npm。

我鼓励所有对这些新功能感兴趣的人开始使用npm v7。

有用的资源

这里是Ruy Adorno在GitHub Presents聚会上发表的有关npm v7亮点的链接。

日志火箭:通过了解上下文更容易调试JavaScript错误

调试代码始终是一项繁琐的任务。但是, 你越了解错误, 就越容易修复它们。

日志火箭使你能够以新颖独特的方式理解这些错误。我们的前端监控解决方案跟踪用户与你的JavaScript前端的互动, 从而使你能够准确找出导致错误的用户行为。

LogRocket仪表板免费试用横幅

notlogy记录控制台日志, 页面加载时间, 堆栈跟踪, 缓慢的网络请求/响应(带有标题+正文), 浏览器元数据和自定义日志。了解你的JavaScript代码的影响再简单不过了!

免费试用

.

一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: