有什么区别:
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关键字的真正作用是什么?
当前回答
as——save是npm的默认选项,所以我使用
npm i package
还有,我用的是
npm i package -D
默认选项将安装包作为项目依赖项,其中as -D为开发依赖项,如测试,lint等,并为开发过程安装包
你可以在这里找到所有的标志https://docs.npmjs.com/cli/v8/commands/npm-install
其他回答
我想补充一些我的想法
我认为当别人使用你的代码而不是你自己使用时,所有的差异都会出现
例如,您编写了一个称为节点请求的HTTP库
在你的图书馆里,
你使用lodash来处理字符串和对象,没有lodash,你的代码就不能运行
如果有人将您的HTTP库作为其代码的一部分使用。你的代码会和他的代码一起编译。
你的代码需要lodash,所以你需要放入依赖来编译
如果你写一个项目,比如monaco-editor,它是一个网络编辑器,
你已经使用webpack捆绑了你所有的代码和你的产品env库,当构建完成时,只有一个monaco-min.js
所以有人不关心是——save还是——save-dependencies,他只需要monaco-min.js
简介:
如果有人想编译你的代码(用作库), 将你的代码使用的lodash放入依赖项中 如果有人想在你的代码中添加更多的特性,他需要单元测试和编译器,把这些放到dev-dependencies中
这里所有的解释都很棒,但缺少一个非常重要的东西:如何仅安装生产依赖项?(没有开发依赖项)。 我们通过使用——save或——save-dev将依赖项与devDependencies分开。 安装所有我们使用的:
npm i
要只安装生产包,我们应该使用:
npm i --only=production
当你使用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)来避免安装那些开发依赖项。
一般来说,您不希望产品包中充斥着只打算用于开发目的的东西。
使用——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来做一些非常酷的事情,Node.js就是一个例子,所以你不希望所有的开发工具都在运行。
如果您正在使用gulp(或类似)来创建构建文件并将其放到服务器上,那么这并不重要。