Files
soul/miniprogram/upload.js

145 lines
4.0 KiB
JavaScript

/**
* 小程序自动上传脚本
* 使用前请先安装: npm install miniprogram-ci --save-dev
*/
const ci = require('miniprogram-ci')
const path = require('path')
// 配置信息
const config = {
// 小程序AppID
appid: 'wxb8bbb2b10dec74aa',
// 项目路径
projectPath: path.resolve(__dirname),
// 私钥路径(需要从微信公众平台下载)
// 下载地址:微信公众平台 -> 开发管理 -> 开发设置 -> 小程序代码上传密钥
privateKeyPath: path.resolve(__dirname, './private.key'),
// 版本号(请根据实际情况修改)
version: '1.0.0',
// 版本描述
desc: 'Soul创业派对 - 首次发布',
// 编译设置
setting: {
es6: true,
es7: true,
minifyJS: true,
minifyWXML: true,
minifyWXSS: true,
minify: true,
codeProtect: false,
autoPrefixWXSS: true
}
}
/**
* 上传小程序代码
*/
async function upload() {
console.log('🚀 开始上传小程序...')
console.log('📦 项目路径:', config.projectPath)
console.log('🆔 AppID:', config.appid)
console.log('📌 版本号:', config.version)
try {
// 创建项目实例
const project = new ci.Project({
appid: config.appid,
type: 'miniProgram',
projectPath: config.projectPath,
privateKeyPath: config.privateKeyPath,
ignores: ['node_modules/**/*']
})
console.log('✅ 项目实例创建成功')
// 上传代码
console.log('⏳ 正在上传代码...')
const uploadResult = await ci.upload({
project,
version: config.version,
desc: config.desc,
setting: config.setting,
onProgressUpdate: (info) => {
console.log('📊 上传进度:', info)
}
})
console.log('🎉 上传成功!')
console.log('📝 上传结果:', uploadResult)
console.log('')
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')
console.log('✅ 代码已上传到微信公众平台')
console.log('📱 请前往微信公众平台提交审核:')
console.log(' https://mp.weixin.qq.com/')
console.log(' 登录 → 版本管理 → 开发版本 → 提交审核')
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')
} catch (error) {
console.error('❌ 上传失败:', error.message)
if (error.message.includes('private.key')) {
console.log('')
console.log('⚠️ 缺少密钥文件 private.key')
console.log('📥 请按以下步骤获取:')
console.log(' 1. 访问 https://mp.weixin.qq.com/')
console.log(' 2. 登录小程序后台')
console.log(' 3. 开发管理 → 开发设置 → 小程序代码上传密钥')
console.log(' 4. 点击"生成",下载密钥文件')
console.log(' 5. 将 private.*.key 重命名为 private.key')
console.log(' 6. 放到 miniprogram 目录下')
}
process.exit(1)
}
}
/**
* 预览小程序
*/
async function preview() {
console.log('👀 生成预览二维码...')
try {
const project = new ci.Project({
appid: config.appid,
type: 'miniProgram',
projectPath: config.projectPath,
privateKeyPath: config.privateKeyPath,
ignores: ['node_modules/**/*']
})
const previewResult = await ci.preview({
project,
desc: config.desc,
setting: config.setting,
qrcodeFormat: 'terminal',
qrcodeOutputDest: path.resolve(__dirname, './preview.jpg'),
onProgressUpdate: (info) => {
console.log('📊 生成进度:', info)
}
})
console.log('✅ 二维码已生成:', './miniprogram/preview.jpg')
console.log('📱 使用微信扫码即可预览')
} catch (error) {
console.error('❌ 生成预览失败:', error.message)
process.exit(1)
}
}
// 命令行参数
const command = process.argv[2]
if (command === 'preview') {
preview()
} else {
upload()
}