npm install中--save和--save-dev之间有什么区别?

6 node.js npm

我试图理解,何时何地使用这些标签,我明白一个是开发依赖,另一个是项目依赖,但是当它用于实际项目时,我没有发现任何差异.我正在寻找一种方法,这将为错误的安装类型抛出错误.有没有办法做到这一点?

eus*_*h77 14

dependencies是项目所依赖devDependencies的模块,是用于开发项目的模块.您可以在npmjs网站上阅读详细说明:

如果有人计划在他们的程序中下载和使用您的模块,那么他们可能不希望或不需要下载和构建您使用的外部测试或文档框架.

在这种情况下,最好将这些附加项映射到devDependencies对象中.

依赖的例子:request,concat-stream,object.assign,through2.

devDependencies的例子:mocha,tape,eslint,grunt,browserify.

无论何时安装或初始化项目,都始终安装依赖项,项目运行时需要它们.devDependencies仅用于开发(测试框架,任务运行器......),只有当某人npm install从项目的根目录运行时才会安装它们.例如,克隆项目存储库之后.

您可以轻松验证.假设我有模块foo,bar,baz,并quux在同一目录下.让我们foo成为一个依赖baz,bar作为一个devDependency baz,baz它本身就是一个依赖quux.

#/$ cd baz
#/baz$ cat package.json
{
  "name": "baz",
  "version": "0.0.0",
  "dependencies": {
    "foo": "../foo"
  },
  "devDependencies": {
    "bar": "../bar"
  }
}
#/baz$ npm install
baz@0.0.0 /tmp/tmpdir/g6jBr9/baz
??? bar@0.0.0
??? foo@0.0.0
Run Code Online (Sandbox Code Playgroud)

如您所见,安装了依赖项和devDependencies.

现在让我们安装baz为依赖quux:

#/$ cd quux
#/quux$ cat package.json
{
  "name": "quux",
  "version": "0.0.0",
  "dependencies": {
    "baz": "../baz"
  }
}
#/quux$ npm install
#/quux$ npm ls
quux@0.0.0 /tmp/tmpdir/g6jBr9/quux
??? baz@0.0.0
  ??? foo@0.0.0
Run Code Online (Sandbox Code Playgroud)

请注意foo已安装但未安装bar.这是因为如果您需要某个模块作为另一个模块的依赖项(即您是该模块的使用者),则不需要其devDependencies,因为模块无需运行它们.