微信小程序 node脚本 自动化 代码上传、预览

3 篇文章 0 订阅
3 篇文章 0 订阅

微信小程序 node脚本 自动化 代码上传、预览

miniprogram-ci

miniprogram-ci 从 1.0.28 开始支持第三方平台开发的上传和预览,调用方式与普通开发模式无异。查看详情

密钥及 IP 白名单配置

使用 miniprogram-ci 前应访问"微信公众平台-开发-开发设置"后下载代码上传密钥,并配置 IP白名单 开发者可选择打开 IP白名单,打开后只有白名单中的 IP 才能调用相关接口。我们建议所有开发者默认开启这个选项,降低风险 代码上传密钥拥有预览、上传代码的权限,密钥不会明文存储在微信公众平台上,一旦遗失必须重置,请开发者妥善保管

image-20220105150314827

IP白名单

IP可以在 查询ip 网站查看自己的 ip 地址 比如:http://mip.chinaz.com/

密钥

上图中的 小程序代码上传密钥,重置或者生成,会下载该密钥文件。

文件修改之后,可能会报下面错误,此时重新生成密钥即可

20003 Error: {"errCode":-1,"errMsg":"get new ticket fail innerCode: -80011"}
脚本调用
npm install miniprogram-ci --save
upload.js
const ci = require("miniprogram-ci");

// 小程序打包之后的路径
const cwd = process.cwd() + "/dist/build/mp-weixin";

const project = new ci.Project({
  appid:'你得appid',
  type: "miniProgram",
  projectPath: cwd,
  // 密钥文件路径
  privateKeyPath: process.cwd() + "/src/你得密钥文件.key",
  ignores: ["node_modules/**/*"],
});

const uploadResult = ci
  .upload({
    project,
    version:'1.0.0',
    desc:'desc',
    setting: {
      es6: false,
    },
    onProgressUpdate: console.log,
  })
  .then((res) => {
    console.log(res);
    console.log("上传成功");
  })
  .catch((error) => {
    if (error.errCode == -1) {
      console.log("上传成功");
    }
    console.log(error);
    console.log("上传失败");
    process.exit(-1);
  });
配置 package.json
"scripts":{
    "build:prod": "cross-env NODE_ENV=production UNI_PLATFORM=mp-weixin vue-cli-service uni-build && node upload.js"
}

可以通过 环境变量 配置 生产、测试、本地等

image-20220105160233444

HTTP V2

升级说明:自 1.02.202003092 开始,CLI& HTTP 接口升级 v2 版本,在 v2 版本中,旧版命令仍然可以使用,但已废弃并会在未来移除,请使用 v2 命令。v2 版本增加了云开发管理操作支持、优化命令形式、增加细致状态提示、支持长时间命令执行、支持国际化(中英文选择)等。

通过命令行调用安装完成的工具可执行文件,完成登录、预览、上传、自动化测试等操作。调用返回码为 0 时代表正常,为 -1 时错误。

要使用命令行,注意首先需要在开发者工具的设置 -> 安全设置中开启服务端口。

命令行工具所在位置:

macOS: <安装路径>/Contents/MacOS/cli

Windows: <安装路径>/cli.bat

upload-cli.js
  • 打开微信开发者工具以及上传代码
// upload.js

const child = require("child_process");
const exec = child.execSync;

function getDays() {
  const date = new Date();

  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const strDate = date.getDate();
  const hours = date.getHours();
  const minutes = date.getMinutes();

  return `${year}${month}${strDate}${hours}${minutes}分提交上传`;
}

const branch = child.execSync("git name-rev --name-only HEAD", {
  encoding: "utf8",
});


const config = {
  // cli.bat 所在目录
  path: `D:/微信web开发者工具/cli.bat`,
  projectPath: `${process.cwd()}/dist/build/mp-weixin`,
  version: `1.2.1`,
  desc: `${getDays()},发布分支${branch}`,
};
// package.json scripts 配置
exec('npm run build', { stdio: 'inherit' });

child.exec(
  `${config.path} islogin`,
  { stdio: "inherit" },
  (error, stdout, stderr) => {
    //  判断是否已经登录微信开发者工具
    const isLogin = JSON.parse(stdout).login;
    if (isLogin) {
      exec(
        `${config.path} upload --project ${config.projectPath} -v ${config.version} -d ${config.desc}`,
        { stdio: "inherit" }
      );
    } else {
      exec(`${config.path} login --qr-size small`, { stdio: "inherit" });
      exec(
        `${config.path} upload --project ${config.projectPath} -v ${config.version} -d ${config.desc}`,
        { stdio: "inherit" }
      );
    }
  }
);

preview-cli.js
  • 生成预览二维码
const child = require("child_process");
const exec = child.execSync;

const config = {
    path: `D:/微信web开发者工具/cli.bat`,
    projectPath: `${process.cwd()}/dist/build/mp-weixin`,
    version: `1.2.1`,
  };

 exec(
    `${config.path} preview  --project ${config.projectPath} --qr-size small`,
    { stdio: "inherit" }
  );

待优化的点

  • 设置版本号
  • 填写版本描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值