背景
小程序已经提供了ci包,可以实现脚本自动上传功能, 但是版本号每次都要开发者手动修改,比较麻烦,而且从社区小程序官方中得到的回复是,不会提供这个功能
那就自己实现一个简单的脚本
项目根路径 updateVersion.js
const semver = require('semver')
let { version } = require('./package.json')
const fs = require('fs')
// 先更新小版本
let patchVersion = semver.inc(version, 'patch')
// 更新以后,进行parse
let patchVersionObject = semver.parse(patchVersion)
// 小版本满10. 就直接更新中版本
if (patchVersionObject && patchVersionObject.patch > 10) {
// 更新中版本
patchVersion = semver.inc(patchVersionObject, 'minor')
}
// 中版本满20,则进位
if (patchVersionObject && patchVersionObject.minor > 20) {
patchVersion = semver.inc(patchVersionObject, 'major')
}
function updateVersion () {
let strem = fs.readFileSync('./package.json').toString()
// 转换成json
strem = JSON.parse(strem)
strem.version = patchVersion
// 写入文件
fs.writeFileSync('./package.json', JSON.stringify(strem, null, 2))
console.log('版本更新成功')
}
/**
* 根据不同的发布环境,如果是生产环境打包发布,则执行updateVersion()
*/
module.exports = updateVersion
小程序的自动上传脚本
const ci = require('miniprogram-ci');
const updateVersion = require('./updateVersion.js')
const env = process.env.releaseEnv
const appid = '';
const privatekey = '';
// 不同的公司,可能有n套环境,但是我们只关心生产环境才更新版本号
if (env === 'prod') {
updateVersion()
}
// 后读取版本
const pkg = require('./package.json');
async function upload() {
const project = new ci.Project({
appid,
type: 'miniProgram',
// 修改自己的目录
projectPath: './dist',
privateKeyPath: privatekey,
ignores: ['node_modules/**/*'],
});
try {
await ci.upload({
project,
version: pkg.version,
desc,
setting: {
es6: false,
es7: false,
autoPrefixWXSS: true,
minify: true,
},
});
} catch (error) {
throw error;
}
}
upload()
上面脚本的触发时机根据自己公司的实际情况进行触发即可。 如果公司没有完整的发布系统,单兵作战可以, 直接执行 npm 脚本, 或者配置在 gitlab的 ci中, 当test分支向master 分支合并就触发runner, 或者 master分支内容变动就自动触发这个脚本
让你明明白白学知识,有代码,有讲解,抄的走,学的会! 点个赞吧 😁😁😁
掘金文章主题和代码高亮使用配置如下:
highlight: monokai theme: fancy