我们在使用npm install安装node模块时,有两种命令参数可以把它们的信息写入package.json文件
npm install *** --save
npm install *** --save-dev
–save会把依赖包名称添加到package.json文件dependencies键下,–save-dev则添加到package.json文件devDependencies键下
官方文档里怎么说?
"dependencies":您的应用程序在生产中所需的包。
"devDependencies": 只需要本地开发和测试的包。
所以我们的理解都是devDependencies 里面的插件只用于开发环境,不用于生产环境,而 dependencies 是需要发布到生产环境的,但是我们真的理解了吗?我们在执行npm install的时候,dependencies和devDependencies里的依赖都一股脑的安装了,那我们是不是随便放在哪里就可以?
既然有dependencies,也有devDependencies,那自然有他存在的道理的,那具体的区别是什么呢?咱也不卖关子,直接告诉你答案:
区别主要有如下两点:
- 如果使用 --production 参数,只安装 dependencies 字段的模块。
$ npm install --production
或者
$ NODE_ENV=production npm install
对于自己要发布上线的项目,eslint、prettier以及ts的type等等这些发布完全用不到的可以放到devDependencies下,然后上线打包部署的时候可以用npm install --production可以减少一些依赖安装时间吧,前提一定是不参与打包的
- 如果我们对外提供的是一个依赖包,在别人引用我们的包的时候devDependencies中的依赖不会被 npm 下载
所以我们应该把只是在开发环境中需要用到的,但是在别人引用我们包的时候不会用到这些内容,放在 devDependencies中,如果都放在dependencies中,会不必要的增大包的体积。
最后,我们还是要好好管理dependencies 依赖 和 devDependencies 依赖,一个完整的 package.json 文件可以让人一眼看出来,这个模块的基本信息,和这个模块所需要依赖的包。