在常规开发小程序的时候一般通过小程序官方编辑器来进行提交到后台审核,如果一个小程序适用于多个组织/角色的情况下,只是某些组织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", // appidenv: "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为当前appidawait writeJson(appid);// 上传小程序await uploadMini({appid: appid,remark: answers.remark,});}});

发布流程

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

后续

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

微信小程序批量提交后台审核相关推荐

  1. 微信小程序批量提交审核

    企业申请成为小程序服务商后,引导合作的商家将小程序授权给小程序服务商管理,服务商可以将开发完成的小程序设置为模板,通过各种权限接口,实现不登录商家的小程序后台,直接通过接口调用的形式,对商家的小程序进 ...

  2. 微信小程序开发(1)—— 微信小程序申请注册提交审核并发布详细流程

    一.微信小程序注册申请 作为开发者可以用测试版.也可以申请测试号.https://developers.weixin.qq.com/miniprogram/dev/devtools/sandbox.h ...

  3. 微信小程序request请求后台接收不到参数问题

    微信小程序request请求后台接收不到参数问题 一. 小程序部分代码 二. 后端 三. 问题代码 四. 请求头 一. 小程序部分代码 发一个普通的request请求 wx.request({url: ...

  4. 微信小程序考勤管理系统+后台管理系统

    <微信小程序考勤管理系统+后台管理系统>该项目含有源码.文档等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序做的考勤前台和Java做的后台管理系统: 微信小程序-- ...

  5. 微信小程序聊天交友平台+后台管理系统

    <微信小程序聊天交友平台+后台管理系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序做的聊天交友前台和Java做的后台管理系统: 微信小程序 ...

  6. 微信小程序调用php,微信小程序调用PHP后台接口 解析纯html文本

    微信小程序调用php后台接口,解析纯html文本,效果图片预览 1.微信js动态传参: wx.request({ url: 'https://m.****.com/index.php/home/xia ...

  7. 微信小程序与Java后台的通信

    一.写在前面 最近接触了小程序的开发,后端选择Java,因为小程序的代码运行在腾讯的服务器上,而我们自己编写的Java代码运行在我们自己部署的服务器上,所以一开始不是很明白小程序如何与后台进行通信的, ...

  8. 微信小程序需要https后台的创业机会思考

    最近比较关注微信小程序,而且微信小程序的后台必须强制要求https, https相对http成本要高很多了. 这里我感觉有2个商机 (1)提供https 中转服务器 ,按流量来收费 (2) 微信小程序 ...

  9. 微信小程序批量获取input的输入值,监听输入框,数据同步

    微信小程序批量获取input的输入值,监听输入框,数据同步 在使用小程序时,跟vue的数据绑定不一样,没有v-model这个属性了,官网也只是给了一些事件监听. 但是我们如果有多个表单时,需要写多个事 ...

最新文章

  1. CASS 7.1 和 AutoCAD 2006的安装使用
  2. 【freemarker】渲染列表一系列操作
  3. 国内滴滴面临“讨伐”,国外Uber日子更难过!活该不?
  4. web developer tips (47):脚本远程调试需关闭IE增强安全配置
  5. 【图像融合】基于matlab小波变换全聚焦图像融合【含Matlab源码 1372期】
  6. TFT液晶屏显示原理
  7. 征途完美单机版_征途单机版下载-征途单机版最新官方版-Minecraft中文分享站
  8. 鼠鼠百科——普适计算
  9. 微信小程序手机摇一摇功能
  10. css页面一些动态效果展示
  11. 同一个机器 安装多个版本Chrome浏览器的方法
  12. __attribute__((section(”name“)))的一些理解
  13. 是用bbed工具模拟对块的破坏,并使用rman bock recover进行块恢复
  14. Java基础编写记事本
  15. 如何恢复录音删除的录音文件_如何使用goldwave给麦克风录音
  16. laydate日期时间插件年选择器和年月选择器实现不用点击确定
  17. 基于51的红外测温测距系统
  18. python绘图房子_matplotlib画房子
  19. 解决ModuleNotFoundError: No module named 'elftools'的问题
  20. 使用iTools、PP助手清理垃圾前后目录对比图

热门文章

  1. 快来看看这份 HashMap 面试小抄
  2. 投资理财-持有和交易
  3. 数理统计仿真实验:大数定律、中心极限定理、矩估计与极大似然估计(含MATLAB代码)
  4. 110kV长距离输电系统增容补偿MATLAB仿真
  5. 视频教程-尹成老师带你学算法-Java
  6. 深度学习论文导航 | 17 EfficientNet:重新思考卷积神经网络模型缩放
  7. 运维工程师必备150个命令(连载中...)
  8. 关于三年工作的一点点感悟
  9. 《关键信息基础设施安全保护条例》简介
  10. 基于交易模块创建多个 EA 交易