微信小程序版本发布实现自增version

2,322 阅读2分钟

背景

小程序已经提供了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