2026-01-30 09:54:26 +08:00

82 lines
2.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const fs = require('fs')
const ci = require('miniprogram-ci')
const path = require('path')
const projectPath = path.resolve(__dirname, '../')
const CI_DESC = process.env.CI_DESC
console.log('项目路径UNI_MODE', CI_DESC)
// 1. 读取 project.config.json
// 1. 确认文件路径
const projectConfigPath = path.resolve(__dirname, './project.config.json')
console.log('配置文件路径:', projectConfigPath)
// 2. 读取原文件
const projectConfig = JSON.parse(fs.readFileSync(projectConfigPath, 'utf-8'))
// 3. 修改版本号示例1.0.0 → 1.0.1
const versionParts = projectConfig.version.split('.')
versionParts[2] = String(Number(versionParts[2]) + 1)
projectConfig.version = versionParts.join('.')
console.log('版本号:', versionParts)
// 4. 写入前验证
try {
fs.accessSync(projectConfigPath, fs.constants.W_OK)
const newContent = JSON.stringify(projectConfig, null, 2)
fs.writeFileSync(projectConfigPath, newContent, 'utf-8')
console.log('版本号已更新为:', projectConfig.version)
} catch (err) {
console.error('操作失败:', err)
process.exit(1) // 非零退出码表示错误
}
// 获取所有小程序上传密钥文件
const privateList = fs.readdirSync(`${projectPath}/ci/privateKey`)
const uploadInfo = {
version: projectConfig.version,
desc: CI_DESC === 'test' ? '测试环境' : CI_DESC === 'prod' ? '生产环境' : '开发环境',
robot: CI_DESC === 'test' ? 2: 1,
}
const command = process.argv.slice(2)[0]
console.log('privateList', privateList)
privateList.forEach(item => {
console.log('item', item)
let appId = item.split('.')[1] // item: private.appId.key
// 创建项目对象
const project = new ci.Project({
appid: appId, // 小程序appid
type: 'miniProgram', // 类型,小程序或小游戏
projectPath: `${projectPath}/dist/build/mp-weixin`, // 项目路径
privateKeyPath: `${projectPath}/ci/privateKey/${item}`, // 密钥路径
ignores: ['node_modules/**/*'] // 忽略的文件
})
let ciFn = null
if (command === 'upload') {
ciFn = ci.upload({
project,
...uploadInfo,
setting: {
es6: true, // 对应小程序开发者工具的 "es6 转 es5"
es7: true, // 对应小程序开发者工具的 "增强编译"
minify: true // 是否压缩代码
}
})
} else if (command === 'preview') {
ciFn = ci.preview({
project,
setting: {
es6: true, // 对应小程序开发者工具的 "es6 转 es5"
es7: true // 对应小程序开发者工具的 "增强编译"
},
qrcodeFormat: 'image',
qrcodeOutputDest: `${projectPath}/ci/qrcode/${appId}_qrcode.jpg`,
onProgressUpdate: console.log
})
}
// 调用
ciFn
.then(res => {
console.log('执行成功', res)
})
.catch(error => {
console.log('执行失败', error)
})
})