说明npm install的–save选项

首先体验node.js / npm。 从我读的npm-install文档:

npm install需要3个独立的,可选的标志,保存或更新你的主package.json的软件包版本:

  • --save :包会出现在你的dependencies

  • --save-dev :包会出现在你的devDependencies

  • --save-optional :包将出现在你的optionalDependencies

但是我不明白它在实践中是如何工作的。 例如,如果我运行命令:

 npm install bower --save-dev 

我期望在当前目录中find一个package.json文件,并将devDependencies设置为安装的bower版本,而不是我什么都找不到。

我在做什么/期待错误?

在Ubuntu 12.04 x64上使用节点v0.10.21,npm 1.3.12

npm不会为你创build package.json ,但是只要package.json 存在并且是合法的JSON ,它就会为你创build必要的依赖关系。

像这样创build它

 echo {} > package.json 

然后,做npm i --save whateverwhatever@~xxx添加whatever@~xxx依赖如预期。 该文件需要在那里,并成为JSON,就是这样。

npm.png

npm install只从registry中提取软件包,并把它们放在你的./node_modules中。 它会更新你的package.json来注册这个新的依赖关系,如果你告诉它的话。 你的package.json有三个依赖块:

  1. 依赖关系 – 这些是您的应用程序运行所必需的。
  2. devDependencies – 开发者环境对于你的应用程序来说是必需的(这就是你的队友可以得到你最近添加到项目中的包,这里列出的依赖关系在生产主机上是不需要的)。
  3. 可选的依赖关系 – 这些包是可选的,如果npm不能解决安装的包是可以的。 即构build失败不会导致npm安装失败(但请注意,您的应用程序应处理无法find该包的情况)。

以下是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