有什么区别:
npm install [package_name]
and:
npm install [package_name] --save
and:
npm install [package_name] --save-dev
这是什么意思?——save和-dev关键字的真正作用是什么?
有什么区别:
npm install [package_name]
and:
npm install [package_name] --save
and:
npm install [package_name] --save-dev
这是什么意思?——save和-dev关键字的真正作用是什么?
当前回答
阅读完成并忘记——保存开发头痛
最简单的答案是——当你为其他开发人员创建包,并希望将包托管在NPM Registry(如lodash、mongoose、express等)时,save-dev非常有用。当你构建或编写Node Server时,——save和——save-dev之间没有区别,因为你的Node Server实现对你来说是私有的,你永远不会在NPM上发布它。
NPM安装如何工作
Whenever we install a new package using npm like npm install express then NPM installs that package to our system and put it into node_modules folder, now NPM will analyze the package.json file of newly installed package i.e express in this case, after analyzing NPM will install all those packages which were mentioned in dependencies section of package.json file of express package. After installing those packages on which express was dependent NPM again analyze the package.json file of all newly installed packages and again install the packages for them, this cycle goes on until all packages are available into node_modules folder to function properly. You can check package dependencies by running npm list in terminal where terminal should point location of your project directory.
——save-dev如何与上述解释的内容相关
Suppose you want to create a new package like express, now while development of this new package you probably want to write some unit testing code and test the package with any other available testing package let's assume mocha in this case. Now you know mocha is only required to test the package not required to use the package. In this case you should install mocha using --save-dev flag, otherwise NPM will install it whenever a developer install your package using NPM. So if we want a dependency not installed when someone install our package from NPM we must install that package using --save-dev in development phase.
最后一件事
不要把——save-dev和协作开发混在一起,如果有人从像github这样的源版本控制系统中克隆了你的包代码,那么NPM肯定会安装所有的devDependencies,也就是使用——save-dev安装的包。
其他回答
人们在生产中使用npm来做一些非常酷的事情,Node.js就是一个例子,所以你不希望所有的开发工具都在运行。
如果您正在使用gulp(或类似)来创建构建文件并将其放到服务器上,那么这并不重要。
——save-dev(只用于开发,不用于生产) ——save(生产依赖项) ——global或-g(全局使用,即可以在本地系统的任何地方使用)
——save-dev用于保存用于开发目的的包。 例如:单元测试、简化… ——save用于保存 应用程序运行所需的包。
已经给出了明确的答案。但是值得一提的是devDependencies是如何影响安装包的:
默认情况下,npm install将安装package中列出的所有依赖项。json。使用——production标志(或者当NODE_ENV环境变量被设置为production时),npm将不会安装devDependencies中列出的模块。
参见:https://docs.npmjs.com/cli/install
我想补充一些我的想法
我认为当别人使用你的代码而不是你自己使用时,所有的差异都会出现
例如,您编写了一个称为节点请求的HTTP库
在你的图书馆里,
你使用lodash来处理字符串和对象,没有lodash,你的代码就不能运行
如果有人将您的HTTP库作为其代码的一部分使用。你的代码会和他的代码一起编译。
你的代码需要lodash,所以你需要放入依赖来编译
如果你写一个项目,比如monaco-editor,它是一个网络编辑器,
你已经使用webpack捆绑了你所有的代码和你的产品env库,当构建完成时,只有一个monaco-min.js
所以有人不关心是——save还是——save-dependencies,他只需要monaco-min.js
简介:
如果有人想编译你的代码(用作库), 将你的代码使用的lodash放入依赖项中 如果有人想在你的代码中添加更多的特性,他需要单元测试和编译器,把这些放到dev-dependencies中