微信小程序cli脚本预览上传

前提
  • 小程序后台 - 开发管理 - 小程序代码上传 - 生成密钥 - 下载
  • 配置IP白名单
目录结构
复制代码
projectRoot/
├── cli/
│   ├── index.js          # ci 脚本
│   ├── private.your_app_id.key  # 你的私钥文件
├── previews/             # 预览二维码存放目录
├── miniprogram/          # 小程序代码目录,这个根据 project.config.json 中 miniprogramRoot 配置来
├── app.json              # 小程序配置文件
├── project.config.json   # 小程序项目配置文件
├── ...                   # 其他小程序文件
cli脚本
js 复制代码
const path = require('path');
const fs = require('fs');
const ci = require('miniprogram-ci');

// cd projectRoot && node cli/index.js type=preview appId=your_app_id version=1.0.0 desc="your description"
const rootPath = path.resolve(__dirname, '..');  // cli/ 的上一级就是项目根目录
const argMap = {
  type: 'preview',
  appId: 'your_app_id',
  version: '1.0.0',
  desc: 'hello ci',
};

process.argv.slice(2).forEach(arg => {
  const [key, value] = arg.split('=');
  argMap[key] = value;
});

(async () => {
  console.log('ci with args:', argMap);
  const { type, appId, version, desc } = argMap;
  const privateKeyPath = path.join(__dirname, `private.${appId}.key`);
  // previews 目录需要存在,或者直接在根目录下也可以
  const qrcodeOutputDest = path.join(__dirname, `../previews/preview-${new Date().getTime()}.png`);
  const project = new ci.Project({
    appid: appId,  // 替换为你的实际AppID
    type: 'miniProgram',
    projectPath: rootPath,  // 指向项目根目录
    privateKeyPath,  // 私钥在cli目录下
    ignores: [
      'node_modules/**',
      '.git/**',
      'cli/**',
    ]  // 忽略cli目录
  });
  if (type === 'upload') {
    console.log('start upload')
    const uploadResult = await ci.upload({
      project,
      version,
      desc,
      setting: {
        es6: true,
      },
      onProgressUpdate: console.log,
    })
    console.log('done upload', uploadResult)
  } else {
    console.log('start preview')
    const previewResult = await ci.preview({
      project,
      desc, // 此备注将显示在"小程序助手"开发版列表中
      setting: {
        es6: true,
      },
      qrcodeFormat: 'image',
      qrcodeOutputDest,
      onProgressUpdate: console.log,
      // pagePath: 'pages/index/index', // 预览页面
      // searchQuery: 'a=1&b=2',  // 预览参数 [注意!]这里的`&`字符在命令行中应写成转义字符`\&`
    })
    console.log('done preview', previewResult)
  }
})()
执行
sh 复制代码
# your_app_id - 改为需要上传的appId
# type preview - 预览;upload - 上传(一旦设置为体验版,后续就是体验版)
cd projectRoot && node cli/index.js type=preview appId=your_app_id version=1.0.0 desc="your description"
相关推荐
m0_5873830039 分钟前
24小时自助健身房软硬件解决方案实战:从架构设计到部署指南
java·spring·小程序·架构·需求分析
CRMEB系统商城1 小时前
前后端技术栈全面换代!CRMEB 多商户(Java)v3.0更新预告
java·开发语言·小程序·php
醒目803 小时前
从图像到拼豆图纸:像素化生成与色板匹配技术实践
微信小程序
2501_916007474 小时前
苹果应用商店App Store上架费用标准及原因解析
android·ios·小程序·https·uni-app·iphone·webview
00后程序员张1 天前
苹果App Store上架指南:费用、原理与步骤详解
android·ios·小程序·https·uni-app·iphone·webview
paopaokaka_luck1 天前
个人综合管理小程序(echarts数据看板、健康数据记录与趋势查看、目标拆解和进度管理、日程待办与番茄钟、习惯打卡、收支统计、个人生活记录、跨模块智能提醒)
前端·javascript·spring·小程序·数据分析·echarts·生活
愚公搬代码1 天前
【愚公系列】《微信小程序项目实战(AI编程+视频图解)》002-一张新地图:AI创业的核心分析框架
人工智能·微信小程序·ai编程
m0_587383002 天前
广州24小时自助健身房解决方案实战指南与系统部署要点
java·spring·小程序·架构·需求分析
ZeroNews内网穿透2 天前
企业内网穿透别再用随机域名!自有域名实现 OA/ERP 公网安全访问
微信小程序·内网穿透·erp·zeronews·运维实战·企业oa·自有域名
m0_587383002 天前
西安同城拼车软件开发实战指南:从零搭建高效系统
人工智能·小程序·数据挖掘·系统架构·需求分析