有什么区别:

npm install [package_name]

and:

npm install [package_name] --save

and:

npm install [package_name] --save-dev

这是什么意思?——save和-dev关键字的真正作用是什么?


当前回答

已经给出了明确的答案。但是值得一提的是devDependencies是如何影响安装包的:

默认情况下,npm install将安装package中列出的所有依赖项。json。使用——production标志(或者当NODE_ENV环境变量被设置为production时),npm将不会安装devDependencies中列出的模块。

参见:https://docs.npmjs.com/cli/install

其他回答

——save-dev将semver规范保存到包描述符文件中的“devDependencies”数组中,——save将其保存到“dependencies”数组中。

正如@andreas-hultgren在这个回答中所建议的,根据npm文档:

如果有人打算下载并在他们的程序中使用您的模块,那么他们可能不想或不需要下载并构建您使用的外部测试或文档框架。

然而,对于web应用程序开发,Yeoman(一个脚手架工具,用于安装同行评审的预先编写的包)。将所有的包放在devDependencies中,而不是放在dependencies中,所以看起来——save-dev的使用在web应用程序开发中是一个安全的赌注,至少。

已经给出了明确的答案。但是值得一提的是devDependencies是如何影响安装包的:

默认情况下,npm install将安装package中列出的所有依赖项。json。使用——production标志(或者当NODE_ENV环境变量被设置为production时),npm将不会安装devDependencies中列出的模块。

参见:https://docs.npmjs.com/cli/install

一般来说,您不希望产品包中充斥着只打算用于开发目的的东西。

使用——save-dev(或-D)选项来分离单元测试框架(jest, jasmine, mocha, chai等)等包。

你的应用需要用于生产的任何其他包都应该使用——save(或-S)来安装。

npm install --save lodash       //prod dependency
npm install -S moment           // "       "
npm install -S opentracing      // "       "

npm install -D jest                 //dev only dependency
npm install --save-dev typescript   //dev only dependency

如果你打开包裹。Json文件,然后你会看到这些条目列出在两个不同的部分:

"dependencies": {
  "lodash": "4.x",
  "moment": "2.x",
  "opentracing": "^0.14.1"
},

"devDependencies": {
    "jest": "22.x",
    "typescript": "^2.8.3"
},

当你使用npm install <package-name>安装一个npm包时,你将它作为一个依赖项安装。

该包将自动列在包中。Json文件,在依赖项列表下(从NPM 5开始:在你必须手动指定-save之前)。 例:NPM安装lodash 按回车键后检查您的包。json文件。

"dependencies": {
    "lodash": "4.x",  
},

当您添加-D标志或——save-dev时,您正在将其作为开发依赖项安装,这将其添加到devDependencies列表中。

示例:NPM install——save-dev lite-server 按回车键后检查您的包。json文件

"devDependencies": {
    "lite-server": "^2.6.1"
},

开发依赖关系是仅用于开发的包,在生产环境中不需要。例如测试包、webpack或Babel。

当你进入生产环境时,如果你输入npm install并且文件夹中包含一个包。Json文件,它们被安装,因为NPM假设这是一个开发部署。

你需要设置——production标志(npm install——production)来避免安装那些开发依赖项。