/** * 小程序自动上传脚本 * 使用前请先安装: 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() }