博客更新地址啦~,欢迎访问:https://jerryyuanj.github.io/blog
写在前面
有过小程序开发经验的都知道,在小程序的生态环境中,是很难做到像其他项目那样完全的CI的,因为我们的上传代码是只能在IDE中操作且代码是提交到微信服务器的,微信并没有提供接口让我们可以自动化部署代码。
一个我们项目中比较常见的问题是,我们本地开发好后,如果想上传代码到腾讯服务器上,需要将本地的一些配置项修改成线上的版本,比如我们的接口地址,项目配置信息等。当然你可以手动去维护,但是不提倡,因为项目如果逐渐增大,业务逻辑变得复杂的话,涉及到的修改项会逐渐增多,手动维护,很难保证不会出错,更有甚者会有人忘记修改直接提交然后苦苦找错,很浪费时间。
这里给大家提供的方案,是我自己根据微信小程序有限的开放能力整理出来的。
废话不多说,入题吧。
你需要会的
- node的基础知识,这里主要用到的是文件的读写
- npm scripts
- 微信小程序的配置(
project.config.json
)
项目结构
项目初始化
如果你是使用IDE搭建的一个quick-start的小程序,那么你的目录结构不是像我上面那样的。你需要将你的项目调整为我上面的那样,其中可以通过npm init -y
来直接生成package.json
文件。修改好以后,别忘了修改你的项目根目录下的project.config.json
,添加下面的配置项以指定你的源码目录,否则会编译不会通过:
"miniprogramRoot": "src/",
添加npm脚本
在你的package.json
中添加npm scripts
,我这里只做演示,只添加了两个环境的切换脚本,如下:
"scripts": {
"switch:dev": "node switch.js --dev",
"switch:prod": "node switch.js --prod"
},
可以看到,我们实际运行的是,项目根目录下的switch.js
文件来实现的,接下来我们来实现这个命令脚本。
实现脚本
实现的思路:
- 获取命令行的参数,判断是什么环境
- 根据环境的不同,选择对应的dev目录下的配置文件
- 进行文件的读写,将应该使用的配置文件中的配置写入到/src/config.js下来
接下来是代码实现,注释写的很详细:
/**
* 根据命令行运行参数,修改 /src/config.js 里面的项目配置信息
* 即动态的将 /config/env 下的配置文件的内容写入到 /src/config.js 中
*/
const fs = require('fs')
const path = require('path')
//源文件
const sourceFiles = {
prefix: '/config/env/',
dev: 'dev.json',
prod: