项目上线后进入运维阶段,今天项目经理跟我说要跟商务演示下系统,结果发现一个关键功能用不了了,唉我去,特色就在这儿,咋能看不了呢?没办法,赶紧抓紧时间解决问题,把程序员累得跟狗一样,完了还惊魂未定。
这件事说明线上项目的版本管理是很有必要的,大版本是经过测试验证的,长期固定,小版本实时更新,小版本允许出问题,大版本是线上版本,不能出问题。那问题来了,对于vue技术栈的前端项目来说,如何在发布时把大小版本分开呢?
这里有几个需求点:
- 大小版本分开发布,分开部署
- 分开发布最好能物理分开
- 分开部署最好不要占用更多端口
参照vuecli文档,思路分几步走:
1、定义小版本模式及环境变量,使项目代码可以区分大小版本
2、物理性分开发布,为大小版本分别配置打包指令
3、修改nginx配置,在同一端口下部署多个项目
开启小版本模式
"temp": "vue-cli-service build --mode temp"
定义环境变量
新建文件.env.temp,在文件中定义环境变量,注意以VUE_APP_开头:
NODE_ENV = 'production'
VUE_APP_TITLE = 'temp'
定义分包指令
"temp": "vue-cli-service build --mode temp",
做完这些运行命令npm run temp其实就可以打包了,不过这里还少了一步,我希望可以打包时大小版本分开,分别对应不同的文件夹。在vue.config.js文件中outputDir项修改下就可以了:
outputDir: process.env.VUE_APP_TITLE === 'temp' ? 'temp' : 'dist', // 生产环境构建文件的目录
接下来运行 npm run temp,就会看到生成了temp文件夹,里面就是我们要的小版本内容了。
nginx分包部署
大小版本的打包命令分开了,打的包也分开了,接下来就是部署了。部署容易啊,一般都用nginx部署,但是前面提到过了,最好不要占用新端口。比如原来是ip+端口,现在我能否实现ip+端口/temp这种方式来访问小版本包?
这块内容我不展开说了,我之前写过一篇文章# 如何在nginx同一端口下部署多个vue项目,可以参考下。
参考资料: