简单整理:
一、关键词解释
devDependencies
用于本地环境开发
dependencies
用户发布环境
devDependencies
是只会在开发环境下依赖的模块,生产环境不会被打入包内。通过NODE_ENV=developement
或NODE_ENV=production
指定开发还是生产环境。 而dependencies依赖的包不仅开发环境能使用,生产环境也能使用
。其实这句话是重点,按照这个观念很容易决定安装模块时是使用--save
还是--save-dev
。
二、基本用法:
-P 相当于 --save-prod, 添加dependencies 里面所有的包。在 -D -O 不存在时,-P 就是默认值 。 也可以写全称: --save-production
-S 相当于 --save; 添加dependencies 里面所有的包。
-D 相当于 --save-dev; 添加devDependencies 里面所有的包,
-O 相当于 --save-optional, 添加在 optionalDependencies 里面的包,
--no-save: 阻止保存记录在dependencies 中。
官方文档:https://docs.npmjs.com/cli/install
三、案例:
dependencies
装载:npm install vue --save-prod
卸载:npm uninstall vue --prod
devDependencies
装载:npm install vue --save-dev
卸载:npm uninstall vue --dev
测试发现你不能将同一个包(例如vue),同时安装到dependencies和devDependencies 里面,他们是互斥的,只能二选一。
这反证了:dependencies依赖的包不仅开发环境能使用,生产环境也能使用
。
四 、 疑问解决
如果你不知道某个包(或叫模块、依赖、组件)是用于开发环境还是生产环境,那么建议1 百度一下,弄清楚是此包用于生产还是开发;2百度没找到答案, 先放到devDependencies,然后 npm run build ,然后测试运行dist中打包好的程序看是否报错。3 若dist没问题,但你还是不放心,放到dependencies保准万无一失,只是生产脚本稍微大的些。
五、注意
npm 的配置文件 package.json 里可以支持设置一些命令(scripts),然后提供简洁的方式执行这个命令,就是 npm run xxx。我们把 开发中需要执行的命令在 package.json 的 script 中定义成 dev,就可以直接通过 npm run dev 触发执行了。例如"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", 特别注意:npm run dev 的dev 与 npm install 模块名 --save-dev 的dev不是一个东西,一点关系都没有。
npm install 模块名 --save-dev ,这里的dev默认特指 devDependencies
npm run dev 的dev 是自定义的,这里dev可以改成任意名称,为了避免混淆建议改成其他名称 例如 mydev 等。
转载一https://blog.csdn.net/zDeer520/article/details/73431295
不再纠结devDependencies与dependencies
以前一直在纠结一个npm安装的包依赖管理的问题。是这样的:我们在使用npm install 安装模块或插件的时候,有两种命令把他们写入到 package.json 文件里面去,他们是:--save-dev或--save
首先需要说明的是Dependencies一词的中文意思是依赖和附属的意思,而dev则是develop(开发)的简写。所以它们的区别在 package.json 文件里面体现出来的就是,使用 --save-dev 安装的 插件,被写入到 devDependencies 域里面去,而使用 --save 安装的插件,则是被写入到 dependencies 区块里面去。
那 package.json 文件里面的 devDependencies 和 dependencies 对象有什么区别呢?devDependencies 里面的插件只用于开发环境(例如测试代码依赖的包或构建工具的包),不用于生产环境,而 dependencies 是需要发布到生产环境的(src项目或组件代码中依赖到的)。比如我们写一个项目要依赖于jQuery、vue,没有这个包的依赖运行就会报错,这时候就把这个依赖写入dependencies ;而我们使用的一些构建工具比如glup、webpack这些只是在开发中使用的包,上线以后就和他们没关系了,所以将它写入devDependencies。
转载二:https://blog.csdn.net/achenyuan/article/details/80899783?utm_source=copy
网上统一的观念是
-
devDependencies
用于本地环境开发时候。 -
dependencies
用户发布环境
其实看名字我也知道是这个意思,我觉得没解释情况。 devDependencies
是只会在开发环境下依赖的模块,生产环境不会被打入包内。通过NODE_ENV=developement
或NODE_ENV=production
指定开发还是生产环境。
而dependencies依赖的包不仅开发环境能使用,生产环境也能使用
。其实这句话是重点,按照这个观念很容易决定安装模块时是使用--save
还是--save-dev
。
转载三:https://www.cnblogs.com/fewenjing/p/5892377.html
dependencies与devDependencies的区别
npm install在安装node模块时,有两种命令参数可以把它们的信息写入package.json文件:
–save
–save-dev
但它的文档里1,只提到一个小区别,–save会把依赖包名称添加到package.json文件dependencies键下,–save-dev则添加到package.json文件devDependencies键下,譬如:
{
"name": "yo",
"version": "0.0.0",
"dependencies": {},
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-copy": "~0.4.1",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-uglify": "~0.2.0",
"grunt-contrib-compass": "~0.7.0",
"grunt-contrib-jshint": "~0.7.0",
"grunt-contrib-cssmin": "~0.7.0",
}
}
dependencies与devDependencies的区别:devDependencies下列出的模块,是我们开发时用的依赖项,像一些进行单元测试之类的包,比如grunt-contrib-uglify,我们用它混淆js文件,它们不会被部署到生产环境。dependencies下的模块,则是我们生产环境中需要的依赖,即正常运行该包时所需要的依赖项。
如果你将包下载下来在包的根目录里运行,执行如下命令,默认会安装两种依赖
npm install
如果你只是单纯的使用这个包而不需要进行一些改动测试之类的,只安装dependencies而不安装devDependencies。执行:
npm install --production
通过“npm install packagename”进行安装,只会安装dependencies
npm install packagename
如需安装devDependencies,执行:
npm install packagename --dev
转载四
回顾 npm install 命令
最近在写Node程序的时候,突然对 npm install 的-save和-save-dev 这两个参数的使用比较混乱。其实博主在这之前对这两个参数的理解也是模糊的,各种查资料和实践后对它们之间的异同点略有理解。遂写下这篇文章避免自己忘记,同时也给node猿友一点指引。
我们在使用 npm install 安装模块的模块的时候 ,一般会使用下面这几种命令形式:
1
2
3
4
5
6
7
|
npm install moduleName # 安装模块到项目目录下
npm install -g moduleName # -g 的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm config prefix 的位置。
npm install -save moduleName # -save 的意思是将模块安装到项目目录下,并在package文件的dependencies节点写入依赖。
npm install -save-dev moduleName # -save-dev 的意思是将模块安装到项目目录下,并在package文件的devDependencies节点写入依赖。
|
那么问题来了,在项目中我们应该使用四个命令中的哪个呢?这个就要视情况而定了。下面对这四个命令进行对比,看完后你就不再这么问了。
npm install moduleName 命令
1. 安装模块到项目node_modules目录下。
2. 不会将模块依赖写入devDependencies或dependencies 节点。
3. 运行 npm install 初始化项目时不会下载模块。
npm install -g moduleName 命令
1. 安装模块到全局,不会在项目node_modules目录中保存模块包。
2. 不会将模块依赖写入devDependencies或dependencies 节点。
3. 运行 npm install 初始化项目时不会下载模块。
npm install -save moduleName 命令
1. 安装模块到项目node_modules目录下。
2. 会将模块依赖写入dependencies 节点。
3. 运行 npm install 初始化项目时,会将模块下载到项目目录下。
4. 运行npm install --production或者注明NODE_ENV变量值为production时,会自动下载模块到node_modules目录中。
npm install -save-dev moduleName 命令
1. 安装模块到项目node_modules目录下。
2. 会将模块依赖写入devDependencies 节点。
3. 运行 npm install 初始化项目时,会将模块下载到项目目录下。
4. 运行npm install --production或者注明NODE_ENV变量值为production时,不会自动下载模块到node_modules目录中。
总结
devDependencies 节点下的模块是我们在开发时需要用的,比如项目中使用的 gulp ,压缩css、js的模块。这些模块在我们的项目部署后是不需要的,所以我们可以使用 -save-dev 的形式安装。像 express 这些模块是项目运行必备的,应该安装在 dependencies 节点下,所以我们应该使用 -save 的形式安装。
相关文档:https://docs.npmjs.com/files/package.json