专栏首页code秘密花园npm v7.0.0 发布 - 带来数个重大更新

npm v7.0.0 发布 - 带来数个重大更新

很难相信,11年前, JavaScript 社区还没有 npm 。快进到今天,npm 现在拥有数百万的开发人员和 130 万个软件包,每月下载 75B

npm v7.0.0 Node.js 15.0.0 一起发布,如果你想立即尝试,可以运行 npm i -g npm@7 进行安装。

令人兴奋的新功能

npm 7带有一些期待已久的功能,其中包括:

  • Workspacesnpm CLI 的一组功能,可支持从单个顶级软件包中管理多个软件包
  • 自动安装 peerDependencies:在 npm 7 之前,开发人员需要自己管理和安装peerDependencies。新的peer dependencies可确保在 node_modules 树中peerDependencies的位置处或之上找到有效匹配的 peerDependencies
  • package-lock v2和对yarn.lock 的支持:新的 package-lock 格式将释放确定性可复制构建的功能,并且包括 npm 完全构建软件包树所需的一切。在忽略 npm 7yarn.lock 文件之前,npm cli现在可以将 yarn.lock 用作软件包元数据和分辨率指南的来源。

旧的又是新的

npm 的内部结构已得到重大重构。在分离关注点方面已经付出了巨大的努力。例如,对 node_modules 树的检查和管理已移至 Arborist 模块 。你可以在 npmjs 博客上中了解有关 Arborist 的信息。

这些内部更改将确保 npm 代码库随着时间的推移更加可靠并且易于维护。更少的错误和更快的迭代周期,我们将能够比以往更快地将更新交付给 npm

我们已经使用 Node.js 测试套件 CITGMnpm 7.0.0 进行了测试,并且很高兴地报告说,尽管内部有巨大的变化,当 npm 7npm 6120+ 高度依赖的模块运行时,没有新的模块会失败!

重大变化

尽管对 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/

点赞、在看支持作者❤️

本文分享自微信公众号 - code秘密花园(code_mmhy),作者:ConardLi

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 前端安全—你必须要注意的依赖安全漏洞

    Lodash 是一款非常流行的 npm 库,每月的下载量超过 8000 万次,GitHub 上使用它的项目有超过 400 万。前段时间 Lodash 的一个安全...

    ConardLi
  • 前端工程化 - 剖析npm的包管理机制(完整版)

    现如今,前端开发的同学已经离不开 npm 这个包管理工具,其优秀的包版本管理机制承载了整个繁荣发展的NodeJS社区,理解其内部机制非常有利于加深我们对模块开发...

    ConardLi
  • package.json 知多少?

    在 Node.js 中,模块是一个库或框架,也是一个 Node.js 项目。Node.js 项目遵循模块化的架构,当我们创建了一个 Node.js 项目,意味着...

    ConardLi
  • npm常用命令

    npm是什么,大家都应该很熟悉了。npm的常用命令很多,为了避免经常到npm官网查找,特将常用的npm命令整理下来。 npm install 包安装模块 本地安...

    IMWeb前端团队
  • NPM 学习笔记整理

    npm 之于 Node ,就像 pip 之于 Python , gem 之于 Ruby , composer 之于 PHP 。

    ihoey
  • npm 常用配置

    npm config list/ls 显示配置信息 npm config list/ls -l 更详细 npm -h 显示帮助信息,建议多查看 npm -l d...

    windseek
  • 解决ionic4编译过慢的问题

    ionic4中编译一次需要几十秒,远比ionic3久,在Github上看有没有人反馈这个问题,发现还真的有,而解决方法是:

    IT晴天
  • 微信小程序使用npm

    1.初始化npm:在你所建项目的根目录下,执行npm init 2.微信开发者工具开启"使用npm模块"(右上角详情-本地设置-勾选使用npm模块) 3.在项目...

    似水的流年
  • NPM常用命令

    版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

    空空云
  • Vue自定义弹窗组件(一)npm包管理

    npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 6000...

    RtyXmd

扫码关注云+社区

领取腾讯云代金券