微信小程序生态15- 批量提交微信小程序审核的一种方式

程序,生态,批量,提交,审核,一种,方式 · 浏览次数 : 374

小编点评

## 代码描述及问题分析 这篇代码是微信小程序生态系列文章的阅读理解和代码解析,它详细介绍了如何使用脚本自动上传小程序代码到微信公众平台的步骤,并附录了“upload.js”代码进行详细的注释。 **代码功能:** 1. 获取微信开发者工具的cli指令。 2. 遍历所有需要上传的小程序信息。 3. 执行“auto-preview”命令预览小程序代码。 4. 执行“updateAppId”函数更新项目配置文件中的appId。 5. 执行“upload”命令上传代码并提交审核。 6. 启动微信公众平台小程序助手。 **问题分析:** 1. 代码首先需要获取微信开发者工具的cli指令,这需要在使用之前进行配置。 2. “updateAppId”函数中可能存在一些问题,例如获取项目配置文件可能存在错误。 3. 代码使用多个独立的命令来执行不同的步骤,这可能导致命令执行顺序问题。 ## 建议 1. 确保获取微信开发者工具的cli指令正确无误。 2. 仔细检查“updateAppId”函数的逻辑,并改进错误处理逻辑。 3. 使用try-catch块捕获可能出现的异常并进行处理。 4. 使用变量或函数参数化代码,以提高代码可读性和可维护性。 5. 使用调试工具调试代码执行过程,以定位问题。 ## 其他补充 1. 代码中使用了微信开发者工具的“auto-preview”功能,可以预览小程序代码的运行结果,但该功能可能存在一些问题,需要根据实际情况进行调整。 2. 代码中使用了“node”环境,需要确保在运行代码之前安装了node.js。 3. 代码中使用了“child_process”模块获取微信开发者工具的cli指令,该模块可能存在安全风险,建议使用其他方法获取指令。

正文

大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

以下是『微信小程序生态系列文章』正文!

需求背景

我们是一个提供SaaS服务的小程序服务商,会给每一个客户申请一个专属的小程序,到目前为止已经差不多有30几个了。由于『微信开放平台』没有用起来,导致我们每次升级版本都很痛苦,一次性要发布30几个小程序。
每个小程序都需要如下流程:

每个小程序的审核都需要这样操作,实在是太繁琐了而且效率非常低下,但由于作为一个程序员,只有小程序的开发权限,所以我只能尽量减少人工操作的环节,用脚本替代。
目前的脚本可以做到将指定代码上传到指定小程序的微信公众平台中,送审->发布的步骤需要借助小程序助手完成。

实现说明

准备材料

  • 微信开发者工具,核心原理就是使用微信的cli工具来自动操作工具进行代码提交;

  • node环境,我将用js代码来实现这个脚本,要用到node来运行;

  • 微信开发者cli指令帮助文档;

实现步骤

第一步、打开微信开发者工具—>设置 -> 安全设置中开启服务端口

第二步、核心执行脚本upload.js

代码内容如下:

//依赖包,执行cmd命令
const cp = require("child_process");
//依赖包,修改文件内容
const fs = require("fs");

//获取微信开发者工具的cli指令(Mac)
const cli = "/Applications/wechatwebdevtools.app/Contents/MacOS/cli";
//获取微信开发者工具的cli指令(Windows)
//const cli = "开发工具安装位置/cli.bat";

//当前小程序项目地址(替换成自己的)
const projectDir =
  "/xxx/xxx/xxx/";

//定义当前版本号
const VERSION = "1.2.9";
//定义当前版本代码的说明
const UPDATE_MESSAGE = "活动";

//定义当前需要上传多少小程序
const list = [{
  appId: "appId1",
  appName: "小程序名称1",
}, {
  appId: "appId2",
  appName: "小程序名称2",
}];

//窗口执行命令工具方法
function exec(cmdStr) {
  return new Promise((resolve, reject) => {
    cp.exec(cmdStr, function (err, stdout, stderr) {
      console.log(err, stdout, stderr);
      if (err) {
        reject(err);
      } else {
        resolve(stdout);
      }
    });
  });
}

//更新project.config.json文件中的appId方法
function updateAppId(appId) {
  return new Promise((resolve, reject) => {
    try {
      const projectPath = `${projectDir}project.config.json`;
      let data = fs.readFileSync(projectPath, "utf8");
      let jsonData = JSON.parse(data);
      jsonData.setting.appid = appId;
      jsonData.appid = appId;
      fs.writeFileSync(projectPath, JSON.stringify(jsonData, "", 2));
      console.log(jsonData);
      resolve();
    } catch (e) {
      reject(e);
      console.error("json error", e);
    }
  });
}

//主方法,for循环执行上传操作
async function main() {
  console.log("准备工作、检查是否已经登录工具")
  const result1 = await exec(`${cli} islogin`)
  console.log(result1)

  console.log("准备工作、打开指定项目")
  const result2 = await exec(`${cli} open --project ${projectDir}`)
  console.log(result2)

  for (let index = 0; index < list.length; index++) {
    const item = list[index];
    console.log(`开始执行小程序:${item.appId}的代码upload操作`)

    console.log("第一步、自动预览")
    const result3 = await exec(`${cli} auto-preview --project ${projectDir}`)
    console.log(result3)

    console.log("第二步、更新project.config.json文件中的appId")
    const result4 = await updateAppId(item.appId);
    console.log(result4)

    console.log("第三步、上传代码审核")
    const result5 = await exec(`${cli} upload --project ${projectDir} -v ${VERSION} -d ${UPDATE_MESSAGE}`);
    console.log(result5)

    console.log(`执行小程序:${item.appId}的代码upload操作结束!`)
  }
  console.log("上传结束、关闭开发者工具")
  const result6 = await exec(`${cli} quit`);
  console.log(result6)
}

//执行命令
main();

该脚本的核心逻辑是使用cli命令控制微信开发者工具,遍历每一个需要送审的小程序,将指定目录下的代码提交到指定的小程序公众平台中,并将该版本变为开发版。

第三步、执行命令

node 'upload.js'

执行结果

第四步、开发版代码已提交

(PC端可查看)

(微信小程序助手可查看)

这个1.2.9版本就是我测试提交的,可以看到代码已经提交好了。

第五步、小程序助手提交小程序审核

小程序助手也是一个微信小程序,直接搜索就行了

点击进入小程序助手

点击刚才上传的版本后,可以直接提交审核

关于审核的结果,只需要关注一下『微信公众平台』,结果会自动推送

总结一下

其实微信开放平台是一个不错的工具,可惜我们前期没有用好,导致大量的小程序没有绑定上去,后面想绑定已经找不到小程序的管理员了。通过脚本的方法也不止这一种,微信公众平台提供了一个小程序的key文件,可以通过这个key文件调用一些接口,也可以实现批量送审。不过还是刚才那个原因,这个key的获取需要小程序管理员扫码,已经联系不到了。
上面的这种办法虽说还是要人肉操作小程序助手,但代码的提交已经可以自动化了,如果后面小程序助手开放出一些接口的话,不妨利用一下,也可以减少不少时间。

与微信小程序生态15- 批量提交微信小程序审核的一种方式相似的内容:

微信小程序生态15- 批量提交微信小程序审核的一种方式

大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 以下是『微信小程序生态系列文章』正文! # 需求背景 我们是一个提供SaaS服务的小程序服务商,会给每一个客户申请一个专属的小程序,到目前为止已经差不

微信小程序生态13-微信公众号自定义菜单配置

序 微信公众号分为订阅号和服务号两种,虽然二者很大的不同,但是这两种公众号的底部却是差不多的:都有菜单栏,而且这些底部菜单也都是自定义配置的。 如CSDN的官方公众号的底部就有精彩栏目、新程序员、CSDN等菜单可供使用: 那这些菜单是如何生成的呢?微信以配置方式的不同把它分为了两类:自定义菜单、个性

使用taro+canvas实现微信小程序的图片分享功能

业务场景 二轮充电业务中,用户充电完成后在订单详情页展示订单相关信息,用户点击分享按钮唤起微信小程序分享菜单,将生成的图片海报分享给微信好友或者下载到本地,好友可通过扫描海报中的二维码加群领取优惠。 使用场景及功能:微信小程序 生成海报图片 分享好友 下载图片 使用技术:Taro vue vant

电子钱包小程序:技术与便捷的完美融合

随着移动支付的快速普及,支付宝、微信支付等电子钱包 App 成为了我们日常生活中不可或缺的一部分,手机充值、生活缴费、便利店付款等场景都离开不了。但是也逐步发现,电子钱包 App 们为了提供更加便捷的支付体验和功能,他们有一个共性就是都在往小程序线路发展。

微信小程序预约视频号直播

一、概述 微信小程序提供了可以唤起预约视频号直播弹窗的接口 reserveChannelsLive,该接口接收一个参数 noticeId,通过 getChannelsLiveNoticeInfo 接口获取。因此,过程如下: 查看视频号 id finderUserName --> 调用 getChan

微信小程序使用微信云托管添加自定义域名并转发到pexels.com

背景:我要在小程序上显示pexels.com上的图片,然后我得先把pexels.com的域名添加到小程序的request合法域名中,但是pexels.com是国外的,在国内没有备案所以添加不了。解决方案就是:用一个已经备案好的域名进行转发,转发的服务器我选择的是微信云托管,备案好的域名还需要ssl,

微信小程序:接手项目,修bug

好家伙, 问题描述如下: 小程序主界面,选择快速上传会议记录 选择快速 其中,没有2022-2023第二学期,所以,新的会议记录无法上传 于是,我自愿修复这个bug 由于我们没有产品文档 我只能由已知,推未知 亲爱的学长告诉我,这是一个使用了uni-app开发的微信小程序 开搞, 1.首先我们把两个

uniapp微信小程序转支付宝小程序踩坑(持续更新)

首先第一个,真有被折磨到! // 微信正常使用,支付宝不行 // 以下两种 微信、支付宝都正常使用

零代码搭建一个微信小程序

基于Astro零代码能力,学习体验快速搭建微信小程序。

低代码助力微信小程序对接,提升开发效率

本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 微信小程序相信大家都用过,相较于APP,微信小程序的优势在于其便捷性,只需要下载一个微信就可以访问所有的小程序,因此许多开发者也逐渐将自己开发的系统部署到微信小程序上以供