我看到安装软件包的指令,要么是
npm install <package_name>
或者npm install <package_name> --save
或npm install <package_name> --save-dev
这些选项有什么区别?我看到安装软件包的指令,要么是
npm install <package_name>
或者npm install <package_name> --save
或npm install <package_name> --save-dev
这些选项有什么区别?自从此问题被提出以来,npm发生了变化,--save
已成为默认选项,因此您不需要使用--save
来更新依赖项。
npm install <package_name> --save
安装软件包并更新package.json中的依赖项。
npm install <package_name> --no-save
安装软件包但不会更新package.json中列出的依赖项。
npm install <package_name> ---save-dev
更新package中的devDependencies
。这些仅用于本地测试和开发。
更多信息请参见https://docs.npmjs.com/getting-started/using-a-package.json。
npm install有三个独占的可选标志,可以在主要的package.json文件中保存或更新包版本:
-S, --save
: 包将出现在您的dependencies中。
-D, --save-dev
: 包将出现在您的devDependencies中。
-O, --save-optional
: 包将出现在您的optionalDependencies中。
当使用以上任何选项将依赖项保存到您的package.json时,还有一个额外的可选标志:
-E, --save-exact
: 保存的依赖项将配置为精确版本,而不是使用npm的默认semver范围运算符。此外,如果您有一个npm-shrinkwrap.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>
的文件或文件夹,则会尝试安装该文件或文件夹,仅在无效时才尝试按名称获取软件包。--save
选项仍然可以使用,但不再是必需的 - 现在默认情况下包会被保存到依赖项中。逻辑现在被倒转了 - 如果您不想保存您的包,您需要指定 --no-save
。 - Coruscate5--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范围运算符。
-B, --save-bundle: 保存的依赖项也将添加到您的bundleDependencies列表中。