npm版本
node版本
发布日期
特性
备注
1.x
0.6.8-0.10.43
2012-01-20
- 代码仓库创建
- 多平台安装支持
- 依赖嵌套安装
2.x
0.10.44-4.9.1
2014-08-19
- 限定包的作用域(scope)
- 用 semver 4.0 版管理版本号
3.x
5.x-7.3.0
2015-10-29
- 依赖扁平化安装
4.x
^7.4.0
2017-01-04
- npm search 重写成流形式的结果,不再支持排序。
- npm scripts 运行脚本之前不需要用 node 可执行路径来运行 npm,可以通过添加 --scripts-prepend-node-path 选项来配置这个行为。
- 移除 npat
- 废弃 prepublish,替换成 prepare。临时添加了一个 prepublishOnly 脚本,只能在 npm publish 运行。
- npm 在没有找到任何超时包的情况下按代码 1 超时退出。
- npm tag 在经过一段废弃周期后被废除,使用 npm dist-tag 替代。
- 已经不再支持部分 shrinkwraps,npm-shrinkwrap.json 现在被认为是完整的安装清单。
- npm 的默认 git 分支不再是 master,现在使用 latest 代替。
5.x
8.x-10.2.1
2017-05-30
- 默认新增 package-lock.json 来记录依赖树信息,进行依赖锁定,并使用新的 shrinkwrap 格式。
- --save 变成了默认参数,执行 install 依赖包时默认都会带上,除非加上 --no-save。
- Git 依赖优化:支持指定 semver 版本安装;含有 prepare 脚本时将安装其 devDependencies 并执行脚本。
- 使用本地目录文件作为 file 类型依赖安装时,使用创建 symlink 的方式替代原来的文件拷贝方式,提升速度。
- 脚本更改:在 npm pack, npm publish 时新增 prepack 和 postpack 脚本;preinstall 脚本运行优先级提升到最前,并且可以修改 node_modules。
- 包发布将同时生成 sha512 和 sha1 校验码,下载依赖时将使用强校验算法。
- 重写整个缓存系统和 npm cache 系列命令。废除 --cache-min --cache-max 等命令,缓存系统将由 npm 自身维护,无需用户介入。
- registry 策略调整:配置优先级高于锁文件中记录的优先级;除非使用不同 scope 的包,不再支持不同的包使用不同的 registry。
借鉴了yarn.lock的设计思想
6.x
10.3.0-14.x
2018-04-24
- 内置安全性检查 - npm audit
- 性能增强。npm@6 比一年前的 npm 快 17 倍。
- CI 的优化。速度提高了 2 到 3 倍。
- Webhook 管理(注册表和包更改的实时通知)
- 更可见的完整性元数据。验证包没有被篡改或损坏变得越来越容易。
- 锁定文件冲突的自动解决。团队可以更轻松地共享可重现的构建。
2018年4月,npm, Inc. 已经收购了 ^Lift Security 的团队和资产,致力于保持 npm 注册表和 npm 应用程序的安全,并开发新产品以帮助开发人员及其公司安全地开发 JavaScript。
7.x
15.x
2020-10-13
-
工作空间
-
自动安装同级依赖项
-
在npm的之前版本(4-6)中,peer dependencies冲突会有版本不兼容的警告,但仍会安装依赖并不会抛出错误。
-
在npm 7中,如果存在无法自动解决的依赖冲突,将会阻止安装。
-
package-lock.json v2(兼容npm6.x)
-
兼容 yarn.lock
-
性能提升
-
依赖包数量上减少了54%(npm 7 67个,npm 6 123个)
-
代码测试覆盖率增加了54%(npm 7 94% vs npm 6 77%)
-
在各种示例中的各种benchmarks中看到了显着的性能提升
2020年4月,npm作为一家公司被GitHub收购
8.x
16.x-18.x
2021-10-07
- 放弃对Node10的支持
如果您使用的是 Node.js 的活动 LTS 版本的最新版本,并且想要从 npm@7 跳转到 npm@8,那么没有太大变化