npm各版本特性

311 阅读3分钟

npm版本

node版本

发布日期

特性

备注

1.x

0.6.8-0.10.43

2012-01-20

  1. 代码仓库创建
  2. 多平台安装支持
  3. 依赖嵌套安装

2.x

0.10.44-4.9.1

2014-08-19

  1. 限定包的作用域(scope)
  2. semver 4.0 版管理版本号

3.x

5.x-7.3.0

2015-10-29

  1. 依赖扁平化安装

4.x

^7.4.0

2017-01-04

  1. npm search 重写成流形式的结果,不再支持排序。
  2. npm scripts 运行脚本之前不需要用 node 可执行路径来运行 npm,可以通过添加 --scripts-prepend-node-path 选项来配置这个行为。
  3. 移除 npat
  4. 废弃 prepublish,替换成 prepare。临时添加了一个 prepublishOnly 脚本,只能在 npm publish 运行。
  5. npm 在没有找到任何超时包的情况下按代码 1 超时退出。
  6. npm tag 在经过一段废弃周期后被废除,使用 npm dist-tag 替代。
  7. 已经不再支持部分 shrinkwraps,npm-shrinkwrap.json 现在被认为是完整的安装清单。
  8. npm 的默认 git 分支不再是 master,现在使用 latest 代替。

5.x

8.x-10.2.1

2017-05-30

  1. 默认新增 package-lock.json 来记录依赖树信息,进行依赖锁定,并使用新的 shrinkwrap 格式。
  2. --save 变成了默认参数,执行 install 依赖包时默认都会带上,除非加上 --no-save。
  3. Git 依赖优化:支持指定 semver 版本安装;含有 prepare 脚本时将安装其 devDependencies 并执行脚本。
  4. 使用本地目录文件作为 file 类型依赖安装时,使用创建 symlink 的方式替代原来的文件拷贝方式,提升速度。
  5. 脚本更改:在 npm pack, npm publish 时新增 prepack 和 postpack 脚本;preinstall 脚本运行优先级提升到最前,并且可以修改 node_modules。
  6. 包发布将同时生成 sha512 和 sha1 校验码,下载依赖时将使用强校验算法。
  7. 重写整个缓存系统和 npm cache 系列命令。废除 --cache-min --cache-max 等命令,缓存系统将由 npm 自身维护,无需用户介入。
  8. registry 策略调整:配置优先级高于锁文件中记录的优先级;除非使用不同 scope 的包,不再支持不同的包使用不同的 registry。

借鉴了yarn.lock的设计思想

6.x

10.3.0-14.x

2018-04-24

  1. 内置安全性检查 - npm audit
  2. 性能增强。npm@6 比一年前的 npm 快 17 倍。
  3. CI 的优化。速度提高了 2 到 3 倍。
  4. Webhook 管理(注册表和包更改的实时通知)
  5. 更可见的完整性元数据。验证包没有被篡改或损坏变得越来越容易。
  6. 锁定文件冲突的自动解决。团队可以更轻松地共享可重现的构建。

2018年4月,npm, Inc. 已经收购了 ^Lift Security 的团队和资产,致力于保持 npm 注册表和 npm 应用程序的安全,并开发新产品以帮助开发人员及其公司安全地开发 JavaScript。

7.x

15.x

2020-10-13

  1. 工作空间

  2. 自动安装同级依赖项

  3. 在npm的之前版本(4-6)中,peer dependencies冲突会有版本不兼容的警告,但仍会安装依赖并不会抛出错误。

  4. 在npm 7中,如果存在无法自动解决的依赖冲突,将会阻止安装。

  5. package-lock.json v2(兼容npm6.x)

  6. 兼容 yarn.lock

  7. 性能提升

  8. 依赖包数量上减少了54%(npm 7 67个,npm 6 123个)

  9. 代码测试覆盖率增加了54%(npm 7 94% vs npm 6 77%)

  10. 在各种示例中的各种benchmarks中看到了显着的性能提升

2020年4月,npm作为一家公司被GitHub收购

8.x

16.x-18.x

2021-10-07

  1. 放弃对Node10的支持

如果您使用的是 Node.js 的活动 LTS 版本的最新版本,并且想要从 npm@7 跳转到 npm@8,那么没有太大变化