有什么区别:

npm install [package_name]

and:

npm install [package_name] --save

and:

npm install [package_name] --save-dev

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


当前回答

我想补充一些我的想法

我认为当别人使用你的代码而不是你自己使用时,所有的差异都会出现

例如,您编写了一个称为节点请求的HTTP库

在你的图书馆里,

你使用lodash来处理字符串和对象,没有lodash,你的代码就不能运行

如果有人将您的HTTP库作为其代码的一部分使用。你的代码会和他的代码一起编译。

你的代码需要lodash,所以你需要放入依赖来编译


如果你写一个项目,比如monaco-editor,它是一个网络编辑器,

你已经使用webpack捆绑了你所有的代码和你的产品env库,当构建完成时,只有一个monaco-min.js

所以有人不关心是——save还是——save-dependencies,他只需要monaco-min.js

简介:

如果有人想编译你的代码(用作库), 将你的代码使用的lodash放入依赖项中 如果有人想在你的代码中添加更多的特性,他需要单元测试和编译器,把这些放到dev-dependencies中

其他回答

我想补充一些我的想法

我认为当别人使用你的代码而不是你自己使用时,所有的差异都会出现

例如,您编写了一个称为节点请求的HTTP库

在你的图书馆里,

你使用lodash来处理字符串和对象,没有lodash,你的代码就不能运行

如果有人将您的HTTP库作为其代码的一部分使用。你的代码会和他的代码一起编译。

你的代码需要lodash,所以你需要放入依赖来编译


如果你写一个项目,比如monaco-editor,它是一个网络编辑器,

你已经使用webpack捆绑了你所有的代码和你的产品env库,当构建完成时,只有一个monaco-min.js

所以有人不关心是——save还是——save-dependencies,他只需要monaco-min.js

简介:

如果有人想编译你的代码(用作库), 将你的代码使用的lodash放入依赖项中 如果有人想在你的代码中添加更多的特性,他需要单元测试和编译器,把这些放到dev-dependencies中

人们在生产中使用npm来做一些非常酷的事情,Node.js就是一个例子,所以你不希望所有的开发工具都在运行。

如果您正在使用gulp(或类似)来创建构建文件并将其放到服务器上,那么这并不重要。

一个完美的例子是:

$ npm install typescript --save-dev

在这种情况下,你会希望使用Typescript(一种可解析javascript的编码语言)进行开发,但一旦应用被部署,就不再需要Typescript了,因为所有的代码都已转译为javascript。因此,将它包含在已发布的应用程序中毫无意义。事实上,它只会占用空间并增加下载时间。

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

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

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

——save-dev(只用于开发,不用于生产) ——save(生产依赖项) ——global或-g(全局使用,即可以在本地系统的任何地方使用)