php ci 小程序,微信小程序miniprogram-ci上传代码

需求

多个微信小程序共用同一套代码,通过开发工具上传代码较繁琐,希望通过后台点击上传。

调研

通过查阅资料,发现微信提供了两种方法

针对需求和实现难度,暂时考虑miniprogram-ci方法

miniprogram-ci接入

前期准备

获取appid和对应的小程序代码上传密钥(开发设置-小程序代码上传中获取)

由于是本地环境调试,先关闭IP白名单

我使用的是uni-app,将build后的微信小程序文件和小程序上传密钥文件放到vue项目中

一次错误的尝试

在vue项目中安装

npm install miniprogram-ci --save

按照文档中的写了方法,对应appid、projectPath、privateKeyPath等都配置好了

const ci = require('miniprogram-ci')

;(async () => {

const project = new ci.Project({

appid: 'wxsomeappid',

type: 'miniProgram',

projectPath: 'the/project/path',

privateKeyPath: 'the/path/to/privatekey',

ignores: ['node_modules/**/*'],

})

const uploadResult = await ci.upload({

project,

version: '1.1.1',

desc: 'hello',

setting: {

es6: true,

},

onProgressUpdate: console.log,

})

console.log(uploadResult)

})()

调用上面的方法,报错fs.statSync is not a function。

查了一波资料,说是需要node环境。翻官网,看到了这个

5d112227dc9c

image.png

换个方式

将之前的代码放到mini.js中,在vscode终端中,cd进入mini.js所在目录,执行

node mini.js

去小程序平台查看,上传成功。但这种方法明显不符合需求,不能在后台系统点击操作

使用nodesjs服务执行

使用koa搭建nodejs项目

引入miniprogram-ci

小程序和上传密钥资源拷贝到项目中

创建mini.js

let uploadMini = function(appid) {

return new Promise(async (resolve, reject) => {

const ci = require('miniprogram-ci')

const path = require('path')

const project = new ci.Project({

appid: appid,

type: 'miniProgram',

projectPath: path.resolve(__dirname, './source/mp-weixin'),

privateKeyPath: path.resolve(__dirname, `./source/private.${appid}.key`),

ignores: ['node_modules/**/*'],

})

ci.upload({

project,

version: '1.1.1',

desc: 'hello',

setting: {

es6: true,

},

onProgressUpdate: console.log,

}).then(res => {

resolve({ code: 0, msg: 'success' })

}).catch(err => {

reject(err)

})

})

}

module.exports = { uploadMini }

创建一个接口

const { uploadMini } = require('./mini.js')

router.get('/uploadMini', async ( ctx )=>{

let appid = ctx.query.appid

let response = {}

if (appid) {

let res = await uploadMini(appid).catch(err => {

if (err.code == 20003) {

err.msg = 'appid与上传密钥不匹配'

}

ctx.body = err

})

if (res) {

ctx.body = res

}

} else {

response = {

code: 1,

msg: '发布失败'

}

ctx.body = response

}

})

Vue项目中调用该接口(传入appid)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值