首页 > 编程语言 >利用miniprogram-ci工具实现一键上传微信小程序代码

利用miniprogram-ci工具实现一键上传微信小程序代码

时间:2024-08-06 13:51:04浏览次数:8  
标签:ci 微信 data miniprogram appid 上传 程序代码

本文由 ChatMoney团队出品

利用miniprogram-ci工具在后台实现一键上传微信小程序代码,避免了微信开发者工具的繁琐。

一、部署node环境

我用的是宝塔,可以直接在宝塔上安装Node.js版本管理器

二、安装miniprogram-ci

npm install miniprogram-ci --save

安装在指定文件夹里,这个可以根据项目情况选择。记住路径,后面需要用到。

我用的是ThinkPHP6,安装在了extend扩展文件夹里面的miniprogram-ci文件夹。

三、下载小程序代码上传密钥

微信公众平台-开发-开发管理-开发设置-小程序代码上传

下载小程序代码上传秘钥到项目,记录路径,后面要用。我放在了miniprogram-ci文件夹里面,方便调用。

IP白名单测试时可选择关闭,打开后需要填写项目IP才能正常使用。

四、编写上传脚本代码

编写上传脚本代码upload.js,放在miniprogram-ci文件夹里面。

const ci = require('miniprogram-ci')
 
//获取传递过来的参数
let data = process.argv[2];
data = JSON.parse(data);
if(data.length ==  0) {
    console.log('参数缺失');
    process.exit(-1);
}
let appid = data.appid;//小程序appid
let privateKeyPath = `../extend/miniprogram-ci/private.${appid}.key`;//秘钥路径
let desc = data.desc;//项目备注
let version = data.version;//版本号
 
// 注意: new ci.Project 调用时,请确保项目代码已经是完整的,避免编译过程出现找不到文件的报错。
const project = new ci.Project({
    appid: appid,
    type: 'miniProgram',
    projectPath: 'the/project/path',//小程序路径,即 project.config.json 所在的目录
    privateKeyPath: privateKeyPath,
    ignores: ['node_modules/**/*'],
})
 
ci.upload({
    project,
    version,
    desc,
    setting: {
        es6: true,//对应于微信开发者工具的 "es6 转 es5"
        es7: true,//对应于微信开发者工具的 "增强编译"
        minify: true,//上传时压缩所有代码,对应于微信开发者工具的 "上传时压缩代码"
    },
    onProgressUpdate: console.log,
})

五、PHP调用node代码实现上传小程序代码

解禁exec()函数,利用exec()函数调用node脚本。

    /**
     * @notes 上传小程序代码
     * @param $appid //小程序appid
     * @param $version //版本号
     * @param $desc //项目备注
     * @return array
     */
    public function upload($appid,$version,$desc)
    {
        try {
            //校验是否已安装miniprogram-ci工具
            if (!file_exists('../extend/miniprogram-ci/node_modules/miniprogram-ci')) {
                throw new \think\Exception('请先安装miniprogram-ci工具');
            }
 
            //上传小程序代码
            $data = [
                'appid' => $appid,
                'version' => $version,
                'desc' => $desc,
            ];
            $json_data = json_encode($data);
            $command = 'node ../extend/miniprogram-ci/upload.js '.escapeshellarg($json_data).' 2>&1';
            $output=null;
            $retval = null;
            exec($command, $output, $retval);
            if ($retval) {
                //错误
                $result = ['code'=>0,'msg'=>$output];
            } else {
                //成功
                $result = ['code'=>1,'msg'=>'上传成功'];
            }
 
            return $result;
        } catch (\Exception $e) {
            return ['code'=>0,'msg'=>$e->getMessage()];
        }
    }

六、结果

打开微信公众平台-版本管理,查看是否有上传的代码,默认开发者是ci机器人1。

下面是对应的CI工具文档链接,这个工具并不止上传一个功能,可以查看下面文档,根据项目需要增删改。

CI工具文档:https://www.npmjs.com/package/miniprogram-ci/v/1.9.8?activeTab=readme

使用CI工具编译上传的代码遇到过部分插件在安卓手机报错的问题,可以适当调整对应的插件版本来适配。

关于我们

本文由ChatMoney团队出品,ChatMoney专注于AI应用落地与变现,我们提供全套、持续更新的AI源码系统与可执行的变现方案,致力于帮助更多人利用AI来变现,欢迎进入ChatMoney获取更多AI变现方案!

标签:ci,微信,data,miniprogram,appid,上传,程序代码
From: https://www.cnblogs.com/chatlin/p/18344979

相关文章

  • ArgoWorkflow 教程(一)--DevOps 另一选择?云原生 CICD 初体验
    本文主要记录了如何使用ArgoWorkflow构建流水线,以及ArgoWorkflow中的Workflow、Template等概念模型。本文主要分析以下问题:1)如何创建流水线2)Workflow、Template、template自己的引用关系3)Workflow和Template之间的参数传递问题4)ArgoWorkflow流水线最佳实践1......
  • 微信支付退款和退款结果查询接口简单实现(.Net 7.0)
    〇、前言相较于支付宝,微信支付对.Net的支持就没那么充分,官方没有提供SDK。但值得庆幸的是,在社区有大佬封装了v3版.NetSDK。原文链接:https://developers.weixin.qq.com/community/develop/article/doc/00020aadc384a0a5f01c3526b56813。SDK名称:SKIT.FlurlHttpClient.W......
  • 基于uniapp微信小程序+SpringBoot+Vue的礼品商城小程序系统设计和实现(源码+论文+部署
    博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P......
  • 基于uniapp微信小程序+SpringBoot+Vue的生日福利管理系统设计和实现(源码+论文+部署讲
    博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P......
  • ComfyUI插件:efficiency-nodes-comfyui节点
    前言:学习ComfyUI是一场持久战,efficiency-nodes-comfyui是提高工作流创造效率的工具,包含效率节点整合工作流中的基础功能,比如EfficientLoader节点相当于LoadCheckpoint+Clipsetlayer+LoadVAE等等的合集,并且该插件提供了更加简便快捷的X/Y对比图,能够使测评工作的效率进一步提......
  • Plugin Boutique Scaler EQ V1.1.3_WIN-TCD&MAC-HCiSO(2024.08更新),持续更新长期有效
    一。PluginBoutiqueScalerEQ1.1.3WIN-TCD&MAC-HCiSO   紧随屡获殊荣的音乐理论插件Scaler之后,ScalerEQ以一种引人注目的全新方式提供了音乐性和色彩的均衡。ScalerEQ是PluginBoutique推出的一款创新均衡器插件,结合传统和和声均衡功能,专注于音乐理论,为音乐制作和混......
  • PuerTS和HybridCLR哪个更适合开发微信小游戏
    1)PuerTS和HybridCLR哪个更适合开发微信小游戏2)使用了PlayAssetDelivery提交版本被Google报错3)怎样设置normalize来改变摄像机位置4)如何禁用增强型输入法中除某些输入操作之外的输入操作这是第397篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术......
  • 微信小程序嵌入快递100物流轨迹
        前提是开通快递100的物流轨迹地图接口,可以联系业务经理送10条测试(他们人超好!)轨迹地图接口返回的数据包括物流历史信息、物流轨迹地图url.我们要做的就是小程序里面点击查看物流,跳转到一个页面,上面显示地图并且可拖拽放大缩小,下面显示物流信息记录。但是微信小程序we......
  • 与 scipy ODR 的正确拟合包括错误吗?
    我有一些数据点的x和y坐标都有错误。因此我需要使用python的scipy.odr.ODR工具来计算最佳拟合斜率和该斜率上的误差。但是,当我尝试添加错误时,ODR失败并仅返回初始猜测参数。我尝试运行它而没有错误,并且它按预期工作:#Importstatementsimportnumpyasnpi......
  • 题解 P6873 [COCI2013-2014#6] FONT
    link题意给你\(N\)个单词,问最多能组成多少个包含所有小写英文字母的句子。\(\mathrm{Solution}\)\(N\le25\)显然搜索。枚举当前选还是不选,搜到头判断是否成功即可。\(\mathrm{Code}\)#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;consti......