最近应用 webpack 在写一个外部 npm 库插件,但遇到一个问题,在本地应用 yarn 和 cnpm 都能够失常下载,去到公司用的 openshift 主动公布零碎上就怎么都没法把这个库 down 下来,于是各种排查,其中排查到下载的 node_modules 包里本人写的插件还会有一个 node_modules 包,狐疑是不是这里出了问题。
在之前的意识中只晓得,vue 打包到生产的文件要放到 dependencies 中,而本地开发的,相似 webpack 这种就放到 devDependencies 中,但没有细想一个问题,就是平时生产上都是用了 vue build 后的文件,那放到这个 dependencies 中其实也就没有存在还要额定依赖包的问题,于是持续往下打,发现原来区别如下:
问:
npm install –save-dev 会保留到 devDependencies 中,npm install –save 会保留到 dependencies。
我在我的项目中用了 vue-video 插件,只存到了 devDependencies 中,打包当前插件也能失常运行。可 dependencies 中没有存,为什么插件不会报错?不是运行时依赖吗?
答:
这个 dependencies 做前端的时候不会有问题,因为最终代码都打包到公布文件外面去了。
写 nodejs 利用的时候很显著。nodejs 没有打包这一说,须要的内部模块都是 node_modules 目录下的。
nodejs 装置依赖有两种办法,一种是全副装置 npm install, 一种是装置生产环境的 npm install –production
- dependencies 中的两种模式都会装置
- devDependencies 生产模式不会装置
所以生产环境用 –production 参数能够保障只下载运行利用必须的包。
比方咱们开发时用到 eslint,那这种须要放到 devDependencies 中去,因为这种有没有这个包都不影响服务端代码的执行,只是束缚开发时的代码格调。