devDependencies与dependencies (转载)

  简单整理:

一、关键词解释

devDependencies用于本地环境开发

dependencies用户发布环境

devDependencies是只会在开发环境下依赖的模块,生产环境不会被打入包内。通过NODE_ENV=developementNODE_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=developementNODE_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

原文地址:https://www.cnblogs.com/hao-1234-1234/p/9718604.html