由于小程序开发框架的特殊性,直接打断了我们团队原本前端的CI/CD自动集成工具链。
我们想了一些办法,让小程序开发、打包发布尽量不依赖手工、重用H5资产,比如:
1、尽量使用WebView来重用H5页面和代码;
2、在集中化的配置文件中(且称为Config.js),通过启动参数来判断环境,使用不同的配置尤其是后台地址。
但是这样无论如何绕不开Config.js中,必须写死多套配置,上正式环境后是个潜在的安全风险不说,多人开发时,并不能很方便地各自配置自己的参数(比如IP地址),必须得修改Config.js文件,一不小心就提交到代码库上覆盖他人的配置。
不知道各位开发者是如何解决这个问题的?
我现在有个思路,以及一些探索:
1、使用Webpack DefinePlugin,通过一个Config.js模板,生成另一个实际被使用的Config.js文件;
这种方式的好处,是可以利用Webpack的完整生态,包括DefinePlugin已经完成的功能,Webpack的自动热更新;缺点是DefinePlugin的配置不那么友好,还是得自己做一些改造实现从环境变量或配置文件加载配置。
2、自己实现一个编译脚本,参考Vue的环境变量机制,支持从.env文件中加载变量,替换Config.js模板中的变量,生成实际使用的Config.js文件
这种方式,也可以利用DefinePlugin实现,或者自己正则替换Config.js中的变量来实现,重点在于读取.env文件的机制得自己实现,vue-cli的代码可以参考不能直接用。
反正不管怎样,都涉及自定义Webpack打包脚本,动手之前,想看看各位看官有没有更简单的方法?