php实现批量上传微信小程序(在windows系统上实现)

php实现批量上传微信小程序(在windows系统上实现)

准备工作:
1.安装php环境(本文以phpstudy为例),下载地址:https://www.xp.cn/download.html
2.安装微信开发者工具,下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html
3.设置git不输入密码,找到C:/users/本机用户名/.gitconfig文件,打开,修改为:
[user]
name = 你的git用户名
email = 你的git邮箱
[credential]
helper = store

4.准备一个空文件夹(即downloadCode.php中提到的$rootDirName),空文件夹中新建config文件夹,config文件夹中创建appid.txt和config.json两个文件;
appid.txt中存放所有的appid,根据附件中appid.txt文件示例,一行存放一个appid,名称和appid之间用中文逗号隔开;
config.json文件中存放本次要修改的除appid外的正确的配置项(我司项目配置项集中存放在config.json文件中,大家可根据自己的项目需要修改)。
示例如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

操作步骤:
一、下拉代码并修改配置项
1.修改downloadCode.php文件中的文件地址、代码库地址

在这里插入图片描述

2.找到php.exe文件地址:准备工作中安装phpstudy的地址/Extensions/php/php7.3.4nts(任选一个版本即可)
在这里插入图片描述

3.cmd切换至上一步找到的phph.exe文件地址,执行 php downloadCode.php所在的文件夹/downloadCode.php
在这里插入图片描述

等待命令执行结束,进行第二步,批量上传。

二、批量上传
1.找到微信web开发者工具安装的文件夹

2.双击打开cli.bat文件

3.在窗口中输入 cli login
等待窗口中出现二维码之后,使用微信扫描二维码登录

4.扫码登陆成功后在窗口输入 cli upload –project 代码文件夹位置根目录 -v 版本号 -d ‘备注说明’
例如:cli upload –project F:\project\test001 -v 1.0.0 -d ‘首次上传’

5.上传完成

若要上传第2个小程序,重复第4步

附件:download.php

<?
    header('Content-type: text/html; charset=UTF8');
    /***这几个变量,值可以修改start***/
    $rootDirName = '准备工作中新建的空文件夹/';//本次操作指定在哪个目录下操作
    $configFile = $rootDirName.'config/config.json';//已设置好的正确的配置文件
    $branchName = 'dev';//拉取得分支名称
    $gitName = '你的代码库地址';//代码库地址
    /***这几个变量,值可以修改end***/
    #1.读取正确的配置项
    $config = file_get_contents($configFile);
    $configArray = json_decode($config,true);
    #2.读取txt文件中配置的所有appid,处理成数组
    $file = fopen($rootDirName."config/appid.txt", "r");
    $configAppidList=[];
    $i=0;
    while(! feof($file)){
         $configAppidList[$i]= fgets($file);
         $i++;
    }
    fclose($file);
    $configAppidList=array_filter($configAppidList);
   // print_r($configAppidList);
    //echo '------<br/>';
    $allAppidList = [];
    foreach($configAppidList as $appid){
        $allAppidList[] = explode(':',$appid);
    }
    print_r($allAppidList);
   // die;
    #3.遍历上一步得到的appid的数组,创建文件夹,拉取代码
    $allAppidList = [];
    foreach($configAppidList as $appid){
        $appidArr = explode(':',$appid);
        $codeDirName = $rootDirName.$appidArr[0];
        if(!file_exists($codeDirName)){
            mkdir($codeDirName);
        }
        #3.1进入文件夹,拉取代码
        $command = 'git clone -b '.$branchName.' '.$gitName.' '.$codeDirName;
        //echo $command;
         exec($command);
        #3.2读取项目中的配置文件project.config.js并修改
        $objProjectArray = json_decode(file_get_contents($codeDirName.'/project.config.json'),true);
        $objProjectArray['appid'] = $appidArr[1];
        echo file_put_contents($codeDirName.'/project.config.json',json_encode($objProjectArray,JSON_UNESCAPED_UNICODE)),":project.config.js修改结果<br/>";
        #3.3读取项目中的配置文件config.js并修改
        $objConfigStr = file_get_contents($codeDirName.'/config/config.js');
        //读取配置项并组合为json
        $a = "{".cut('const config = { ','}',$objConfigStr)."}";
        //去掉//注释
        $objConfig = preg_replace('/\/\/[\s\S]+?\s/', '', $a);
        //修改项目中的config.js文件并转为json
        $mergeArray = array_merge(json_decode($objConfig,true),$configArray);
        $mergeArray['appid'] = $appid;
        $resultConfig  = json_encode($mergeArray,JSON_UNESCAPED_UNICODE);
        //去掉开头结尾的{}后合并到文件中
        $replace = mb_substr($resultConfig,1,mb_strlen($resultConfig)-2);
        $c=mergeStr('const config =  {','}',$objConfigStr,$replace);
        echo file_put_contents($codeDirName.'/config/config.js',$c),":config.js修改结果<br/>";
        echo $codeDirName."完成===================================<br/>";
    }
    //截取指定两个字符之间的字符串
    function cut($begin,$end,$str){
        $b = mb_strpos($str,$begin) + mb_strlen($begin);
        $e = mb_strpos($str,$end) - $b;
        return mb_substr($str,$b,$e);
    }
    //替换指定两个字符之间的字符串
    function mergeStr($begin,$end,$str,$replace){
        $b = mb_strpos($str,$begin) + mb_strlen($begin);
        $e = mb_strpos($str,$end);
        $len = mb_strlen($str);
        return $begin.$replace.mb_substr($str,$e,$len);
    }
?>
                       

点击阅读全文

上一篇 2023年 5月 27日 am11:11
下一篇 2023年 5月 27日 am11:12