--save标志对npm install有什么作用


100

我看到使用以下任一方法安装软件包的说明

npm install <package_name>

要么

npm install <package_name> --save

要么

npm install <package_name> --save-dev

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

Answers:


83

npm install <package_name> --save安装软件包并更新package.json中的依赖项。由于询问了此问题--save,因此npm进行了更改,因此已成为默认选项,因此您无需使用它--save来更新依赖项。

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上阅读更多内容。


3
这是我的Google搜索“ npm --save flag”的最佳答案。请考虑使用正确的信息更新它,即--save现在是默认设置,而--no-save是必需的,以便不更新package.json中的依赖项列表
Jonas Rosenqvist,

51

npm install带有3个排他的,可选的标志,用于保存或更新主package.json中的软件包版本:

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

-D, --save-dev:软件包将出现在您的devDependencies中。

-O, --save-optional:软件包将出现在您的optionalDependencies中。

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

-E, --save-exact注意:保存的依赖项将使用确切的版本配置,而不是使用npm的默认semver range运算符。此外,如果您有npm-shrinkwrap.json,则也会对其进行更新。

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

注意:如果您的作用域名称上不包含@ -symbol,则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


51
虽然该--save选项似乎仍然有效,但不再需要-软件包现在默认保存为依赖项。该逻辑是颠倒-如果你希望保存你的包,你需要指定--no-save
Coruscate5

谢谢@ Coruscate5完全回答了我的问题。

27

--save标志不再起作用。

以前,如其他答案所述,该--save标志将更新项目package.json文件中的依赖项,但npm install现在默认情况下包括此功能。

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

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

npm-install文档中的更多信息:

npm install默认将所有指定的软件包保存到依赖项中。此外,您可以使用一些其他标志来控制在何处以及如何保存它们:

-P,--save-prod:软件包将出现在您的依赖项中。除非存在-D或-O,否则这是默认设置。

-D,--save-dev:软件包将出现在您的devDependencies中。

-O,--save-optional:包将出现在您的optionalDependencies中。

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

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

-E,--save-exact:将使用精确版本配置保存的依赖项,而不是使用npm的默认semver range运算符。

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


感谢您提供涵盖当前情况的最新答案
DrCord

这澄清了我长期以来的疑问。谢谢
Alok Ranjan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.