uni-app 微信小程序自动上传版本
# uni-app 微信小程序自动上传版本
# 环境相关
node 版本 node -v 14.19.1
npm 依赖包 chalk inquirer
# 项目目录结构
# 主要文件
# 自动更新版本号
./ci/change-version.js 文件,设置自动更新版本号
// ./ci/change-version.js
var inquirer = require('inquirer')
var chalk = require('chalk')
var { version } = require('./../src/package.json')
var fs = require('fs')
var path = require('path')
/**
* 更新版本
* 末位版本号
* 规则:默认+1
*/
function updateVersion(num = 1) {
let versionArr = version.split('.')
var patchVersion = Number(versionArr[versionArr.length - 1]) + num
return [versionArr[0], versionArr[1], patchVersion].join('.')
}
/**
* 修改版本号
*/
function changeVersion(version) {
const pkgPath = path.join(__dirname, './../src/package.json')
let pkg = fs.readFileSync(pkgPath)
pkg = JSON.parse(pkg)
pkg.version = version
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 4))
console.log(chalk.green(`**************修改版本号成功: ${version}************ `))
}
/**
* 修改构建生成文件夹
*/
function changeBuldDir() {
const pkgPath = path.join(__dirname, './../project.config.json')
let pkg = fs.readFileSync(pkgPath)
pkg = JSON.parse(pkg)
const arg = process.argv.splice(2)[0]
// uni-app 生产环境构建目录为 dist/build/mp-weixin 其他环境为 dist/dev/mp-weixin 因此需要根据不同环境修改上传代码入口
let dir = arg === 'pro' ? 'dist/build/mp-weixin/' : 'dist/dev/mp-weixin'
if (pkg.miniprogramRoot !== dir) {
pkg.miniprogramRoot = dir
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 4))
}
console.log(chalk.green(`**************构建生成文件夹: ${dir}************ `))
}
// 自动更新版本号
inquirer
.prompt([
{
name: 'version',
message: '新版本号',
type: 'input',
default: `${updateVersion()}`
}
])
.then(function (answers) {
console.log(chalk.green(`**************新版本号: ${answers.version}************ `))
try {
changeVersion(answers.version)
changeBuldDir()
} catch (error) {
console.error(error)
process.exit()
}
})
# 设置配置文件目录
./ci/cicmd-config.sh 脚本配置文件
# 设置微信开发者工具-命令行工具位置(绝对路径)
cli=/g/xiaoc1103/exeBox/微信web开发者工具/cli.bat
# 设置项目根路径(绝对路径)
project_base=/g/xiaoc1103/code/gitlab/supplier-member/supplier-member-wechat
# 执行脚本文件内容
./ci/cicmd.sh 脚本文件内容
#!/bin/bash
# 确保脚本抛出遇到的错误
set -e
echo -e '\033[32m获取基础信息...\033[0m'
# node版本
node -v
# npm版本
npm -v
# 当前环境变量sit,uat,pro
env=$1
echo 当前环境:$env
# 当前分支
branch_all=`git branch`
branch=${branch_all:2}
echo 当前分支:$branch
# 获取cicmd配置文件
source ci/cicmd-config.sh
# 获取项目地址
if [ $env = "pro" ] ; then
project_path="$project_base/dist/build/mp-weixin"
else
project_path="$project_base/dist/dev/mp-weixin"
fi
echo 项目地址:$project_path
# 设置版本号
version=$(cat ./src/package.json | sed 's/,/\n/g' | grep "version" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g' | sed 's/"//g'| sed 's/\s//g' )
echo 当前版本:$version
# 打包构建
echo -e '\033[32m打包生成部署文件...\033[0m'
npm run build:$env
# 获取当前时间
# time=$(date "+%Y-%m-%d %H:%M:%S")
# 获取上一次git提交信息作为上传的提交信息
echo -e '\033[32m获取版本提交信息...\033[0m'
head_commit_info=`git log --pretty=format:“%s” "HEAD" -1`
head_commit_author=`git log --pretty=format:“%an” "HEAD" -1`
head_commit_date=`git log --pretty=format:“%cd” "HEAD" -1 --date=format:'%Y-%m-%d %H:%M:%S'`
head_commit_desc="更新说明:${head_commit_info} 更新日期:${head_commit_date} 更新环境:${env}"
echo $head_commit_desc
# 上传
echo -e '\033[32m执行上传...\033[0m'
$cli upload --project $project_base -v $version -d "${head_commit_desc}"
# 将版本更新文件提交远程仓库
echo -e '\033[32m执行版本更新推送...\033[0m'
git add .
git commit -m"V${version}"
git push origin $branch
# 预览
# $cli preview --project $project_base
# 执行指令
./package.json
{
"scripts": {
"build:sit": "cross-env NODE_ENV=sit UNI_PLATFORM=mp-weixin vue-cli-service uni-build",
"build:uat": "cross-env NODE_ENV=uat UNI_PLATFORM=mp-weixin vue-cli-service uni-build",
"build:pro": "cross-env NODE_ENV=production UNI_PLATFORM=mp-weixin vue-cli-service uni-build",
"ci:sit": "bash ./ci/cicmd.sh sit",
"ci:uat": "bash ./ci/cicmd.sh uat",
"ci:pro": "bash ./ci/cicmd.sh pro",
"submit:sit": "node ./ci/change-version.js sit && yarn ci:sit",
"submit:uat": "node ./ci/change-version.js uat && yarn ci:uat",
"submit:pro": "node ./ci/change-version.js pro && yarn ci:pro"
}
}