说明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 whatever
将whatever@~xxx
添加whatever@~xxx
依赖如预期。 该文件需要在那里,并成为JSON,就是这样。
npm install
只从registry中提取软件包,并把它们放在你的./node_modules中。 它会更新你的package.json来注册这个新的依赖关系,如果你告诉它的话。 你的package.json有三个依赖块:
- 依赖关系 – 这些是您的应用程序运行所必需的。
- devDependencies – 开发者环境对于你的应用程序来说是必需的(这就是你的队友可以得到你最近添加到项目中的包,这里列出的依赖关系在生产主机上是不需要的)。
- 可选的依赖关系 – 这些包是可选的,如果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