坚果大叔 坚果大叔
  • 首页
  • 闲言碎语
  • 技术
  • 生活
  • 记录
  • 朋友
  • 热点新闻
  • 常用代码
  • 工具箱
  • 关于
首页 › 技术 › 微信小程序批量提交后台审核

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

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

在常规开发小程序的时候一般通过小程序官方编辑器来进行提交到后台审核,如果一个小程序适用于多个组织/角色的情况下,只是某些组织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)
新年快乐🎉
上一篇
一点
下一篇
在小程序中查看
搜你想看的
聚合文章
周末,去太湖。
常见的CSS文字居中显示
重学Javascript之基础数据
Vue3 Ref获取节点返回顺序不一致。
闲言碎语
Memos
npm install 出现 Error:EISDIR:illegal operation on a directory 的错误提示!
2025-03-31 19:02:11
559 0 0
iphone 利用 Scriptable 添加网上国网电费小组件
2025-01-06 20:40:20
5,002 6 2
在博客中加上memos记录展示。
2024-12-25 23:41:27
2,333 5 2
网页点击平滑滚动效果~
2024-10-17 16:43:08
2,037 4
5
  • 5
博主

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

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

开往-友链接力

萌ICP备20230818号

苏ICP备18048410号-3
  • 首页
  • 闲言碎语
  • 技术
  • 生活
  • 记录
  • 朋友
  • 热点新闻
  • 常用代码
  • 工具箱
  • 关于
# CSS # # JavaScript # # vue # # 微信 # # 生活 #
坚果大叔
317
文章
125
评论
365
喜欢