保存标志对 npm 安装有什么作用

我看到了安装包的说明

npm install <package_name>

或者

npm install <package_name> --save

或者

npm install <package_name> --save-dev

这些选项之间有什么区别?

62809 次浏览

更新于2019年:

由于问到这个问题时,npm 发生了变化,因此 --save已经成为默认选项,所以不需要使用 --save来更新依赖项。


原答案:

npm install <package_name> --save安装包并更新 package.json 中的依赖项。

npm install <package_name> --no-save安装包,但不更新 package.json 中列出的依赖项。

npm install <package_name> ---save-dev更新包中的 devDependencies。这些仅用于本地测试和开发。

你可以在 https://docs.npmjs.com/getting-started/using-a-package.json阅读更多。

Npm install 采用3个独占的可选标志,用于保存或更新您的 main package.json 中的包版本:

-S, --save: 包将出现在您的依赖项中。

-D, --save-dev: 包将出现在 devDependency 中。

-O, --save-optional: 包将出现在可选的依赖项中。

当使用上述任何一个选项将依赖项保存到 package.json 时,还有一个附加的可选标志:

-E, --save-exact: 保存的依赖项将配置为精确的版本,而不是使用 npm 的默认切分范围操作符。 此外,如果您有一个 npm-shinkwrap.json,那么它也将被更新。

<scope>是可选的。将从与指定范围关联的注册中心下载包。如果没有注册表与给定的范围相关联,则假定为默认注册表。参见 npm-scope。

注意: 如果范围名称中没有@- 符号,npm 会将其解释为 GitHub 存储库,见下文。作用域名称后面还必须跟一个斜杠。

例子:

npm install sax --save
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save --save-exact

注意: 如果当前工作目录中有一个名为 <name>的文件或文件夹,那么它将尝试安装该文件或文件夹,并且只有在软件包无效时才尝试按名称获取该软件包。

(来自官方文件) https://docs.npmjs.com/cli/install

--save标志不再起作用。

以前,正如其他答案所指出的,--save标志将更新项目的 package.json文件中的依赖项,但是 npm install现在默认包含这个功能。

此时,如果要防止 npm install保存依赖项,则必须使用 --no-save标志。

感谢 Coruscate5在他们的 评论中提到这一点。

更多信息请看 Npm-install 文档:

Npm install 默认情况下将任何指定的包保存到依赖项中。此外,您还可以通过一些附加标志来控制在何处以及如何保存它们:

- P,—— save-prod: 包将出现在依赖项中。这是默认值,除非-D 或-O 出现。

- D,—— save-dev: 包将出现在 devDependency 中。

- O,—— save-选择性保存: 包将出现在选择性依赖项中。

—— no-save: 防止保存到依赖项。

当使用上述任何一个选项将依赖项保存到 package.json 时,还有两个额外的可选标志:

- E,—— save-Precision: 保存的依赖项将配置为精确版本,而不使用 npm 的默认切分范围操作符。

- B,—— save-bundle: 已保存的依赖项也将添加到 bundleDependency 列表中。