如何安装 npm 包的指定(旧)版本?
安装指定版本:npm install 包名@版本号(如 lodash@4.17.20)。支持 ^、~ 版本范围、latest 标签、甚至 Git 地址。本文汇总版本号写法与锁定技巧。
**语法:npm install <包名>@<版本号>。**例如:
npm install lodash@4.17.20 # 精确安装 4.17.20
版本号写法一览
npm install lodash@4.17.20 # 精确版本
npm install lodash@^4.17.0 # 兼容 4.x 的最新版(默认策略)
npm install lodash@~4.17.0 # 只允许补丁级更新(4.17.x)
npm install lodash@latest # 最新版(标签)
npm install lodash@4.17.20 --save-exact # package.json 里也写死精确版本
查看一个包有哪些版本可装:npm view lodash versions。
回退到旧版本的完整姿势
包升级后出问题要回退:
npm install some-package@1.2.3 # 装回旧版
建议同时加 --save-exact(或在 .npmrc 里设 save-exact=true),让 package.json 里记录精确版本而不是 ^ 范围,防止下次 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 后又变回新版?
package.json 里写的是 ^ 范围。改成精确版本号(去掉 ^)或提交 lock 文件。
Q:能直接从 Git 仓库装特定提交吗?
能:npm install user/repo#commit-hash,或 npm install github:user/repo#branch。
Q:装完想验证版本对不对?
npm list 包名 查看实际安装版本。