如何安装 npm 包的指定(旧)版本?

安装指定版本:npm install 包名@版本号(如 lodash@4.17.21)。支持 ^、~ 版本范围、latest 标签、甚至 Git 地址。本文汇总版本号写法与锁定技巧。

最佳实践
文件、模块与依赖组织示意

**语法:npm install <包名>@<版本号>。**例如:

npm install lodash@4.17.21     # 精确安装 4.17.21

版本号写法一览

npm install lodash@4.17.21     # 精确版本
npm install lodash@^4.17.0     # 兼容 4.x 的最新版(默认策略)
npm install lodash@~4.17.0     # 只允许补丁级更新(4.17.x)
npm install lodash@latest      # 发布者维护的latest标签,不一定是数值最大版本
npm install lodash@4.17.21 --save-exact   # package.json 里也写死精确版本

查看一个包有哪些版本可装:npm view lodash versions。

回退到旧版本的完整姿势

包升级后出问题要回退:

npm install some-package@1.2.3   # 装回旧版

建议同时加 --save-exact(或在 .npmrc 里设 save-exact=true),让 package.json 里记录精确版本而不是 ^ 范围,限制未来依赖解析范围;已有且满足 package.json 的 lockfile 通常会保留已锁版本,并非每次 npm install 都自动升级。

常见问题(FAQ)

Q:package.json 里是 ^4.0.0,装了 4.1.0 想回到 4.0.5 怎么做?
npm install pkg@4.0.5 --save-exact。范围版本号本身不锁定,锁的是 package-lock.json——回退后 lock 文件会同步更新。

Q:为什么装了旧版,npm install 后又变回新版?
检查 lockfile 是否缺失、冲突或与清单不一致,是否执行过 update,以及 npm 配置;^ 范围允许后续解析升级,但不代表有效锁文件会被每次安装忽略。

Q:能直接从 Git 仓库装特定提交吗?
能:npm install user/repo#commit-hash,或 npm install github:user/repo#branch。

Q:装完想验证版本对不对?
npm list 包名 查看实际安装版本。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台