npm install 的 --save 选项是什么

--save 曾用于把包写入 package.json 的 dependencies;自 npm 5.0(2017 年)起这已是默认行为,--save 成为无意义的历史遗留。常用的是 --save-dev(-D,写入 devDependencies)和 --save-exact(-E,锁定精确版本)。

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

--save 是个过时的选项:npm 5.0 之前需要它把安装的包写进 package.json 的 dependencies;npm 5.0 之后这就是默认行为,--save 写不写都一样。 现在真正常用的相关选项是 -D(--save-dev)和 -E(--save-exact)。

现在的默认行为

npm install express        # 自动写入 dependencies(等价于过时的 --save)
npm install -D jest        # 写入 devDependencies
npm install -E lodash      # 保存本次解析出的精确版本(不带 ^)
npm install --save-optional x  # 写入 optionalDependencies

历史背景

npm 5.0(2017 年)之前,npm install express 只把包装到 node_modules 而不改 package.json,需要 npm install express --save 才记录依赖——忘记加 --save 是当时最常见的"我机器上能跑"事故。npm 5 把保存改为默认,--save 就此沦为无害的空操作,只在老教程里还能看到。

实用选项速查

选项 作用
(默认) 写入 dependencies,版本带 ^
-D, --save-dev 写入 devDependencies
-O, --save-optional 写入 optionalDependencies
-E, --save-exact 精确版本,不带 ^ 或 ~
-g, --global 全局安装,不改 package.json
--no-save 只装到 node_modules,不写 package.json

常见问题(FAQ)

Q:老教程里的 --save 要不要照抄?

不用,去掉即可。它不会报错,只是什么都不做。

Q:^ 和 ~ 前缀是什么?

^4.17.1 允许升级到 4.x 最新(向后兼容),~4.17.1 只允许 4.17.x 补丁更新。想完全锁定用 -E 保存精确版本,配合 package-lock.json 双保险。

Q:--no-save 什么时候用?

临时试验某个包不想污染 package.json,或在容器镜像里装一次性调试工具。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台