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

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

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

文章目录[隐藏]

  • 实现步骤
    • 准备工作
    • 代码
      • 版本号自增算法
      • 上传小程序代码
      • 调用上传逻辑
    • 发布流程
    • 后续

在常规开发小程序的时候一般通过小程序官方编辑器来进行提交到后台审核,如果一个小程序适用于多个组织/角色的情况下,只是某些组织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即可。

后续

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



微信扫描下方的二维码阅读本文

小程序
赞赏 赞(2)
新年快乐🎉
上一篇
一点
下一篇
再想想
暂无评论
近期文章
  • 3月已到月底,今年已过四分之一!
  • 使用encodeURI出现URI malformed报错?
  • 周末,公园,人多!!!
  • Element-Plus的一点疑难问题~
  • 一些AList站点以及有趣的网址
使用encodeURI出现URI malformed报错?
2023-03-14 16:38:10
460 0 0
Element-Plus的一点疑难问题~
2023-02-28 17:21:19
489 3 0
Home
2023-01-19 13:49:05
322 0 1
2022!充满魔幻的一年!
2022-12-31 21:09:51
392 2 0
2
  • 2
  • 0
博主

一枚佛系前端开发,会一丢丢摄影,喜欢折腾,爱好美食。分享点前端技巧、笔记以及各种有趣的APP和资源教程♥♥

友链
Lieme
公众号
坚果大叔 执行上下文 卖坚果的怪叔叔
Copyright © 2017-2023 卖坚果的怪叔叔. Designed by nicetheme.

苏ICP备18048410号-2
  • 首页
  • 技术
  • 生活
  • 记录
  • 朋友
  • 常用代码
  • 工具箱
  • 关于
# WordPress # # CSS #
坚果大叔
233
文章
65
评论
174
喜欢