dependencies:项目依赖。在编码阶段和呈现页面阶段都需要的,也就是说,项目依赖即在开发环境中,又在生产环境中。如js框架vue、页面路由vue-router,各种ui框架antd、element-ui、vant等,-save 自动把模块和版本号添加到dependencies部分。
devDependencies: 开发依赖。仅仅在写代码过程中需要使用,比如css预处理器、vue-cli脚手架、eslint之类,-save-dev 自动把模块和版本号添加到devdependencies部分。
出于好奇,我有把devDependencies内容移动到dependencies但是没有什么区别
实质区别
如果我们只是单纯的做项目,那么我们可简单地认为生产环境和开发环境做为一种友善的提示,实质没有什么区别;但是,如果在发布npm包的时候,两种环境安装方式是有很大区别的!!!
假设有以下两个模块:
模块A
- devDependencies
模块B
- dependencies
模块C
模块D
- devDependencies
模块E
- dependencies
模块A
npm install D的时候, 下载的模块为:
- D
- A
- C
当我们下载了模块D的源码,并且在根目录下npm install, 下载的模块为:
- A
- C
- E
所以,在发布npm包的时候,本身dependencies下的模块会作为依赖,一起被下载;devDependencies下面的模块就不会自动下载了;但对于项目而言,npm install 会自动下载devDependencies和dependencies下面的模块。
-S -D区别
-g 是全局安装,不带 -g 会安装在个人文件夹
-S 与 --save 的简写,安装包信息会写入 dependencies 中
-D 与 --save-dev 的简写,安装包写入 devDependencies 中