卖坚果的怪叔叔 卖坚果的怪叔叔
  • 首页
  • 生活
  • 技术
  • 记录
  • 工具箱
  • 关于我
首页 › 技术 › 微信小程序批量提交后台审核

微信小程序批量提交后台审核

坚果大叔
2023-01-29 17:56:58技术阅读 5,071

在常规开发小程序的时候一般通过小程序官方编辑器来进行提交到后台审核,如果一个小程序适用于多个组织/角色的情况下,只是某些组织code不同其他代码一致,这时候如果需要开发提交审核,那就是一个比较头疼的问题了。如果你有10个code变量,那就要在开发完成后提交后台审核上线这一步上就得花费一个小时或者更多的时间。

微信给开发者提供了三种提交审核的方式:

1、通过开发者编辑器提交

2、注册为微信服务商来统一管理提交

3、通过miniprogram-ci来进行提交。

如果选择第二种方法,那就需要注册为微信服务商。同时也需要开发相对应的版本后台管理系统,结合目前的实际情况还是选择了第三种方案。优先解决批量小程序提交审核的问题。

首先去小程序的后台获取小程序的appId以及在开发管理中-开发设置-小程序代码上传 获取该小程序的代码上传密钥以及关闭IP白名单

微信小程序批量提交后台审核-卖坚果的怪叔叔

准备工作

首先新建文件夹用来存放小程序的key如下图:

以appid为文件名内容为key,同时新建version.json文件用来对当前小程序版本号进行管理

微信小程序批量提交后台审核-卖坚果的怪叔叔

代码

安装相关依赖

import inquirer from 'inquirer'
import shell from 'shelljs'
import fs from 'fs'
import ci from 'miniprogram-ci'
import path from 'path'
const username = '小程序提交名称'
const __dirname = ''
const config = [{
    appid: "appid", // appid
    env: "prod", // 发布环境
    name: "小程序名字", // 小程序名字
  }];

版本号自增算法

// 版本自加算法
function autoVersionAdd(version, index) {
  if (!version) return new Error("版本号不存在");
  let arr = version.split(".");
  index === undefined && (index = arr.length - 1);
  let newVal = parseInt(arr[index] || "0") + 1;
  if (newVal > 20 && index !== 0) {
    arr.splice(index, 1, 0);
    if (index < 0) return arr.join(".");
    return versionAutoAdd(arr.join("."), index - 1);
  } else {
    arr.splice(index, 1, newVal);
    return arr.join(".");
  }
}

上传小程序代码

// 上传小程序
const uploadMiniCode = (options) => {
  return new Promise(async (resovle) => {
    let {
      appid,
      remark,
      name
    } = options;
    // 获取版本号
    const versions = await getVersions();
    // 获取自增后的版本号
    const version = autoVersionAdd(versions[appid]);
    const project = new ci.Project({
      appid: appid, 
      type: "miniProgram", // 类型-小程序
      projectPath: path.join(__dirname, "dist/dev/mp-weixin"), // 项目路径
      privateKeyPath: process.cwd() + /keys/${appid}.key, // 密钥路径
      ignores: ["node_modules/**/*"], // 忽略的文件
    });
    // 调用上传方法
    ci.upload({
        project,
        version: version || "1.0.0",
        desc: username + ":" + remark, // 上传用户信息
        setting: {
          es6: true, // 是否 "es6 转 es5"
          es7: true, // 是否 "es7 转 es5"
          minify: true, // 是否压缩代码
        },
      })
      .then(async (res) => {
        console.log("----------代码上传成功-------------");
        await setVersion(appid, versions, version);
        resovle({
          isSuccess: true,
        });
      })
      .catch((error) => {
        console.log("上传失败");
        resovle({
          isSuccess: false,
        });
        process.exit(-1);
      });
  });
};

调用上传逻辑

inquirer
  .prompt([{
      type: "input", // 类型
      name: "remark", // 字段名称,在then里可以打印出来
      message: "备注:", // 提示信息
    },
    {
      type: "checkbox",
      message: "请选择你要发布的环境?",
      name: "type",
      choices: config.map((item) => {
        return {
          name: item.name,
          value: item.appid,
        };
      }),
    },
  ])
  .then(async (answers) => {
    console.log(answers, '------------开始选择----------------');
    // 队列式上传
    for (let appid of answers.type) {
      switch (appid) {
        case "wx6182acwewe8557e17":
          console.log("正在发布xxxx,请稍等...");
          break;
        default:
          break;
      }
      // 修改打包文件的appid为当前appid
      await writeJson(appid);
      // 上传小程序
      await uploadMini({
        appid: appid,
        remark: answers.remark,
      });
    }
  });

发布流程

每次发布前将代码拷贝到发布程序的dist路径下,然后在根目录执行node deploy.js即可。

后续

执行完成之后还需要登录各个小程序的后台进行人工提交审核,没办法,如果想全部自动化只能走微信服务商那一套流程,等到后期业务规模变大可以在考虑这种实现方式。前期先解决一键提交审核,后期在解决自动化问题

小程序
赞赏 赞(5)
新年快乐🎉
上一篇
一点
下一篇
在小程序中查看

这是个😊,挣点服务器费用😜

热门文章
微信小程序发布新版本,如何提示强制更新!
简单!三步实现微信消息同步!!
吐血收集的1000+九号电动车提示音,免费领取!
使用 Clash 加速同一局域网下的其他设备
老家的桃树和梨树
重学JavaScript之面向对象的程序设计(继承)
专题标签
agent (1) CSS (15) dom (1) Es6入门系列 (14) Git (3) html (1) iview (1) JavaScript (9) js (4) Lif (1) Node (4) pyecharts (1) Python (10) ref (1) scriptable (1) Skill (1) vsCode (1) vue (4) wordpress (2) 三月 (1) 上海 (1) 假期 (1) 其他分享 (3) 前端两三问 (15) 古镇 (1) 外滩 (1) 对象 (1) 小程序 (5) 年度总结 (6) 年终总结 (1) 微信机器人 (4) 打字机 (1) 技术 (1) 日常问题 (8) 日常问题记录 (1) 春天 (2) 服务器 (2) 海族馆 (1) 生活 (8) 网上国网 (1) 记录 (3) 通勤 (1) 重学JavaScript (11) 面试题 (10) 🌸 (1)
什么是Agent?
2026-08-15 23:49:12
395 0 2
什么是 Skill?
2026-08-12 21:32:42
322 1 0
失业在家,我给小朋友做了一个练字小程序!
2026-08-07 16:21:52
597 10 1
上线8年,15万用户的小程序,一共赚了多少钱?
2026-05-30 18:01:24
4,643 4 0
5
  • 5
博主

一位佛系的前端开发者,略通摄影,乐于尝试新事物,热衷于美食。

友链
故事胶片
公众号
坚果大叔 执行上下文 卖坚果的怪叔叔 Dacking
Copyright © 2017-2026 卖坚果的怪叔叔

开往-友链接力

萌ICP备20230818号

苏ICP备18048410号-3
  • 首页
  • 生活
  • 技术
  • 记录
  • 工具箱
  • 关于我
# CSS # # JavaScript # # vue # # 微信 # # 生活 #
坚果大叔
345
文章
171
评论
432
喜欢