npm install中--save选项的澄清

8

首次尝试使用node.js/npm。从npm-install文档中我了解到:

npm install 命令有3个互斥的可选标志,可以将包版本保存或更新到您的主要package.json文件中:

  • --save: 包将出现在您的dependencies中。

  • --save-dev: 包将出现在您的devDependencies中。

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

但我无法理解它在实际中是如何工作的。例如,如果我运行以下命令:

npm install bower --save-dev

我期望在当前目录下找到一个 package.json 文件,并且其中的 devDependencies 已设置为安装的 bower 版本,但实际上我什么都没有找到。
是否我的操作或期望有误?
使用的是 Ubuntu 12.04 x64 操作系统,node 版本为 v0.10.21,npm 版本为 1.3.12。
2个回答

7

npm不会为您创建package.json,但只要package.json存在并且是合法的JSON格式,它就会为您创建必要的依赖项。

按以下方式创建:

echo {} > package.json

然后,执行 npm i --save whatever 命令会正常将 whatever@~x.x.x 添加为依赖项。需要确保文件存在且为 JSON 格式。

npm.png


1
npm init 是另一个选项。 - durum
你用的是哪个版本?因为我刚试了一下 npm 1.2.21,但对我来说不起作用。 - durum
无法使用最新的 npm。Nico 是正确的。我会删除我的回答。 - durum

4

npm install仅从仓库中获取软件包并将其放置在./node_modules中,如果你需要,它会更新你的package.json以注册这个新依赖项。你的package.json有三个依赖块:

  1. dependencies - 这些是你的应用程序运行所需的。
  2. devDependencies - 这些是为了开发人员环境而需要的(这是你的团队成员可以获取你最近添加到项目中的包的方式。此处列出的依赖项在生产主机上不是必需的。)
  3. optionalDependencies - 这些软件包是可选的,如果npm不能解析要安装的软件包,则没有关系。即构建失败不会导致npm安装失败(但请注意,你的应用程序应该处理找不到软件包的情况。)

以下是使用不同npm install命令的行为:

$ npm install async #Only installs, no change made to package.json
$ npm install async --save #Installs, adds async@version to dependencies block
$ npm install async --save-dev # Installs, adds async@version to the devDependencies block
$ npm install async --save-optional # Installs, adds async@version to the optionalDependencies block

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接