npm install的--save选项是什么?


2034

我看到了一些命令所在的教程:

npm install --save

--save选项是什么意思?

在Google上找不到答案。


32
@ Tom- --save: Package will appear in your dependencies.
WiredPrairie 2015年

7
您可以使用快捷方式-S和-D,其中-S是--save,而-D是'--save-dev。--save(或简单的-S):软件包将出现在您的依赖项中。--save-dev(或简单的-D):软件包将出现在您的devDependencies中。
Gil Epshtain '16

5
@WiredPrairie谢谢我正在尝试npm install (--help | -h | -help ..),什么也没有。
juliangonzalez

2
thx @Dmitri,我有同样的问题。来吧NPM添加到您的MAN页为你的工具
Erdinc好哦

67
我不理解在文档和帮助页面中删除甚至仅提及此选项的决定背后的基本原理,至少也不会在工具本身中发出警告,也不推荐使用此选项。同时,新手通过不计其数的教程来接触它。然后,他们尝试找出它的作用,并不得不浪费20分钟阅读文档,最终最终阅读了stackoverflow上的npm历史记录。奇怪的是,防止这种大量的时间浪费(如果问题的普遍性表明了这一点)是文档的目的之一。
Michael Ekoka,

Answers:


2474

更新npm 5:

npm 5.0.0开始,默认情况下已安装的模块作为依赖项添加,因此--save不再需要该选项。其他保存选项依然存在并在中列出的文件npm install

原始答案:

在版本5之前,NPM node_modules默认情况下只是安装了一个软件包。当您尝试为应用程序/模块安装依赖项时,您需要先安装它们,然后将它们(以及适当的版本号)添加到的dependencies部分中package.json

--save选项指示NPM将软件包自动包含在dependencies您的部分中package.json,从而为您节省了额外的步骤。

此外,还有一些补充选项--save-dev--save-optional它们分别将包保存在devDependencies和下optionalDependencies。当安装仅开发包(例如grunt或您的测试库)时,这很有用。


139
说真的,这在任何地方都有记录吗?我在Google或npm帮助中找不到它。
Christian Ternus

111
如果在npm install --help使用时显示此文档,那将是很好的。
Mark Stosberg

11
@jimsmith:从npm 5.0开始,它是默认值。
voithos

3
NPM 5上的“ npm更新”是否默认情况下会修改package.json?
伊戈尔·奥科罗科夫

6
@voithos对我来说,NPM 5更新package.json中的软件包版本。为了避免它,我需要运行“NPM更新--no保存”
伊戈尔Okorokov

219

要添加依赖包:

npm install my_dep --save

要么

npm install my_dep -S

要么

npm i my_dep -S

在devDependencies中添加软件包

npm install my_test_framework --save-dev

要么

npm install my_test_framework -D

要么

npm i my_test_framework -D

package.json 在此处输入图片说明


30
请小心使用快捷方式版本,-S -D因为它们必须是大写的。我总是会犯此错误,npm不会抱怨或将其添加到package.json
Murray Wynnes,2016年

7
它不会抱怨,因为-s(小写字母)用于该--silent选项,并且-d用于日志级别的信息,它们都是有效的快捷方式。
tanvi

131

如果没有package.json文件,它将不会执行任何操作。首先运行npm init以创建一个。然后调用npm install --savenpm install --save-devnpm install --save-optional将更新package.json列出您的依赖项。


37
刚刚发现它具有追溯力(看来)。您可以先运行npm install --save-dev,然后运行npm init并填充package.json。
Jacob Wang

20

根据NPM Doc

在此处输入图片说明

如此看来,通过运行npm install package_name,程序包依赖项应自动添加到package.json中,对吗?


1
我想--no-save是要在需要npm <5之类的功能时使用的
Abhiroj Panwar

我看到,这npm config ls -l表明默认情况下,save-xxx选项全为false,只有save为true。
ROROROOROROR

如果您放置一个不存在的选项(例如--save-xxxxxx),看起来npm不会触发任何错误。它只是忽略它,默认行为--save-prod将会生效。也许--save来自旧的npm版本。
莱昂

13

您还可以使用-S-D-P等同于将包保存到应用程序依赖,开发人员依赖或产品依赖中。请在下面查看更多NPM快捷方式:

-v: --version
-h, -?, --help, -H: --usage
-s, --silent: --loglevel silent
-q, --quiet: --loglevel warn
-d: --loglevel info
-dd, --verbose: --loglevel verbose
-ddd: --loglevel silly
-g: --global
-C: --prefix
-l: --long
-m: --message
-p, --porcelain: --parseable
-reg: --registry
-f: --force
-desc: --description
-S: --save
-P: --save-prod
-D: --save-dev
-O: --save-optional
-B: --save-bundle
-E: --save-exact
-y: --yes
-n: --yes false
ll and la commands: ls --long

可以通过运行以下命令获取此快捷方式列表:

$ npm help 7 config

7

从npm 5开始,使用--save-prod(或-P)比做--save相同的事情更有利,如npm install中所述。到目前为止,--save如果提供,仍然可以使用。


这需要放到顶部,以使我们所有人免于阅读变化,矛盾和线程劫持的烦恼。因此,需要鼓励使用有效的URL做出简洁的答案,以便我们避免CRUD并继续我们的工作。(Quora有一个简洁的“此答案是否相关”等信息,我什至甚至还没有建议这样做)\ n遗憾的是,官方节点文档没有提及较旧的(已终止)选项,并且大多数节点引用似乎都是预先编写的-5.0,让我们转头旋转。
killjoy

6

从npm 5开始,npm现在将默认保存。万一,如果您希望npm以与以前版本类似的旧方式工作(不自动保存),则可以更新config选项以启用自动保存,如下所示。

npm config set save false

要获取当前设置,可以执行以下命令:

npm config get save

资料来源:https : //blog.pusher.com/what-you-need-know-npm-5/


6

npm install package_x --save

给定的包(package_x)将保存在依赖关系内的package.json中。如果添加

npm install <<package_x>> --save-dev

然后将其保存在devDependencies中


12
您的答案对其他答案尚未涵盖的内容有何贡献?
佩德罗(Pedro)

@Pedro A-我怀疑那个家伙重写了他刚刚读的东西;然后请他的朋友给他投票。
IAM_AL_X

3

将依赖项添加到package.json的更简单(更棒)方法是从命令行执行此操作,并根据您的需要使用--save或--save-dev标记npm install命令。使用该依赖性。


3

npm install --savenpm install --save-dev为什么在我们的项目中安装软件包时在这两个之间选择1个选项。

上面的答案可以清楚地看出,这些答案npm install --savedependencypacakage.jsonfile 的字段中添加条目,在dev-dependency

因此出现了一个问题,为什么我们需要在pacakge.json文件中输入安装模块,因为每当我们检入代码git或将代码提供给某个人时,我们总是给出或不检查它,node-modules因为它的尺寸非常大并且可以在以下位置找到为了避免这种情况,我们可以这样做。

因此,其他人将如何获得该项目专用或所需的所有模块,因此答案是from the package.json文件,其中包含用于运行或开发该项目的所有必需软件包。

因此,在获得code we simply need to run the npm install命令后,它将读取package.json文件并安装必要的必需软件包。


2

npm i(软件包名称)-保存

简单来说,使用上面的命令,我们将不需要在package.json文件中写入软件包名称,它会自动添加其名称和相关性以及您下次进行生产或设置时所需的版本。

npm帮助安装

上面的命令ll有助于找出更多选项并更正定义。如图所示 在此处输入图片说明

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.