devDependencies:
本地开发过程中的依赖,不会打包到最终的bundle中去,线上环境不依赖的库,都可以放在此处
dependencies
无论是本地开发,还是最终的线上版本都会用到的依赖,会打包到最终的bundle中去(当然你也可以通过webpack的配置来设置某些包为外部依赖,这样也不会被打包到最终bundle中)
一般核心库都需要放在此处,线上环境依赖的库,都需要放在此处
peerDependencies
peerDependencies是用来解决重复依赖的问题
总结
大家在使用依赖库的时候,一定要注意依赖库配置的位置,错误的配置会导致最终的bundle变大,而peerDependencies则可以解决依赖库重复打包的问题,并且还能解决公共npm版本不一致的问题
参考文档
https://nodejs.org/en/blog/npm/peer-dependencies/
http://nodejs.cn/learn/the-package-json-guide