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

2023-11-22 17:40

本文主要是介绍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/

  • 关注公众号【前端宇宙】,每日获取好文推荐

  • 添加微信,入群交流


“在看和转发”就是最大的支持

这篇关于npm v7.0.0 发布 - 带来数个重大更新的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/411810

相关文章

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

Maven 依赖发布与仓库治理的过程解析

《Maven依赖发布与仓库治理的过程解析》:本文主要介绍Maven依赖发布与仓库治理的过程解析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录Maven 依赖发布与仓库治理引言第一章:distributionManagement配置的工程化实践1

Redis中6种缓存更新策略详解

《Redis中6种缓存更新策略详解》Redis作为一款高性能的内存数据库,已经成为缓存层的首选解决方案,然而,使用缓存时最大的挑战在于保证缓存数据与底层数据源的一致性,本文将介绍Redis中6种缓存更... 目录引言策略一:Cache-Aside(旁路缓存)策略工作原理代码示例优缺点分析适用场景策略二:Re

Pandas利用主表更新子表指定列小技巧

《Pandas利用主表更新子表指定列小技巧》本文主要介绍了Pandas利用主表更新子表指定列小技巧,通过创建主表和子表的DataFrame对象,并使用映射字典进行数据关联和更新,实现了从主表到子表的同... 目录一、前言二、基本案例1. 创建主表数据2. 创建映射字典3. 创建子表数据4. 更新子表的 zb

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片