没什么影响。
这两个字段本意是为了加快项目下载依赖速度的。
比如可能存在单元测试、代码格式化等依赖项插件,这些依赖项对于这个项目本身而言并不是导入的模块,而是在开发时才需要用到,那么对于仅仅想运行一下项目、而非要开发项目的人来说,也必须 npm install
一遍。可你要知道 npm
早期版本可是以安装慢著称的(虽然从 npm 5.0 之后已经有很大改善了)。
所以搞出来了两个字段,如果只是想跑一遍项目,那么 npm install --production
就好了,这样只会下载安装 dependencies
里的依赖项。
但对于现在的前端来说,如果不是工具库的开发者,那么 Webpack 一类的 Bundle 工具基本就是必需品(Vue、React,三大框架中的俩依赖于此)。你说 babel
之类的依赖项,算 dependencies
里吧可你又的确没在项目里 import Babel from 'babel'
过;算 devPependencies
里吧可你真要 npm install --production
不安装它的话项目还是跑不起来。所以这俩字段就变成了一个比较鸡肋的存在。
一般来说的话,在运行阶段依赖的项,放到 dependencies
里;仅仅在开发、测试、编译阶段依赖的项,放到 devPependencies
。遵循这个原则就可以了。
P.S. 中文网络上会流传一些错误的说法,比如 Webpack 不会打包 devPependencies
下的代码啊 balabala,对此我的建议是:不要搜中文技术文章,全是错的还互相抄。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…