背景:前端react项目使用jenkins、gulp进行自动发布,过程中遇到问题是node_modules太大,导致发布一次需要30分钟左右,跟后台项目发布时长差不多了!
坚信node_modules可全局安装,记录下来希望大家有所启发。
1.首先在打包服务器环境上,全局安装package.json。直接执行全局安装会失败,可使用node脚本的child_process.exec对package.json的所有依赖进行全局安装。
2.此时执行gulp命令会报 install gulp local错误。此时需要设置NODE_PATH环境变量。
在/etc/profile中设置即可:export NODE_PATH=/usr/local/lib/node_modules
3.在jenkins命令中执行gulp时,发现一直会报 install gulp local错误,但其实在cmd中是可正常使用的。
猜测是jenkins的执行环境未使用全局变量缘故,方案是在jenkins系统设置->全局变量(Environment variables)中添加NODE_PATH即可
4.webpack配置用到的包需要增加全局处理:
resolve: {
fallback: [process.env.NODE_PATH, 'node_modules'],
alias: {
}
},
resolveLoader:{
fallback: [process.env.NODE_PATH, 'node_modules'],
}