微信小程序:miniprogram-ci自动打包工具使用介绍以及支持配置环境变量、jekins打包、taro、uni-app三方工具

embedded/2024/10/23 3:00:13/

tarouniapp_0">微信小程序:miniprogram-ci自动打包工具使用介绍以及支持配置环境变量、jekins打包、taro、uni-app三方工具

背景介绍

一直都是本地电脑运行微信开发者工具打包上传。多项目中新老版本对node版本要求不一致,老是切来切去。而且同一个人开发上传需要打包生产环境,发布后继续打包测试环境顶替回去。若需要审核失败、中途加东西重新发版很耽搁时间。
本文是依据:taro + ci + jekins 模式上传(原生的大同小异,区别很小),机器人1只发布生产环境,机器人2只发布测试环境。

概述

miniprogram-ci 是从微信开发者工具中抽离的关于小程序/小游戏项目代码的编译模块。
开发者可不打开小程序开发者工具,独立使用 miniprogram-ci 进行小程序代码的上传、预览等操作

官方文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html

功能

miniprogram-ci 目前提供以下能力:

  • 上传代码,对应小程序开发者工具的上传【本文
  • 预览代码,对应小程序开发者工具的预览
  • 构建 npm,对应小程序开发者工具的: 菜单-工具-构建npm
  • 上传云开发云函数代码,对应小程序开发者工具的上传云函数能力
  • 上传云托管代码,对应小程序开发者工具的上传云托管能力
  • 上传云存储/静态托管文件,对应小程序开发者工具-云开发-云存储和静态托管文件管理
  • 代理,配置 miniprogram-ci 的网络请求代理方式
  • 支持获取最近上传版本的 sourceMap
  • 支持 node 脚本调用方式和 命令行 调用方式

密钥及 IP 白名单配置

使用 miniprogram-ci 前应访问"微信公众平台-开发-开发设置"后下载代码上传密钥,并配置 IP 白名单 开发者可选择打开 IP 白名单,打开后只有白名单中的 IP 才能调用相关接口

在这里插入图片描述

ip地址填写,当你不知道时候
cmd命令行跑下:curl ifconfig.me 上面显示的ip就是访问设备所在的ip地址
也可以直接浏览器打开 https://ifconfig.me

安装依赖

npm install miniprogram-ci --save

创建脚本文件

项目根目录下创建文件夹:miniprogram-ci(可自行更换)
新文件夹内新建 (名称可以自行更换):

  1. /miniprogram-ci/ci.js (脚本文件)
  2. /miniprogram-ci/ci.key (小程序后台下载的key。可以不换名)
    在这里插入图片描述

ci.js介绍

const ci = require('miniprogram-ci');
const path = require('path');
const config = require('../project.config.json');
const package = require('../package.json');const project = new ci.Project({ // 详见官方文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html#%E9%A1%B9%E7%9B%AE%E5%AF%B9%E8%B1%A1appid: config.appid, // 小程序appidtype: 'miniProgram',projectPath: process.cwd(), // 项目地址privateKeyPath: path.join(process.cwd(), `/miniprogram-ci/ci.key`), // key文件地址ignores: ['node_modules/**/*'], // 忽略上传文件
});(async () => {try {// 构建版本号和描述const version = package.version;const desc = `运行环境:${process.env.NODE_ENV || 'test'}`;// 打印执行上传操作console.log('开始上传...');console.log('上传版本号:', version);console.log('上传描述:', desc);const uploadResult = await ci.upload({project,version,desc,setting: { // 详见官方文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html#%E7%BC%96%E8%AF%91%E8%AE%BE%E7%BD%AEes6: true,minify: true,autoPrefixWXSS: true,},robot: process.env.CI_ROBOT_ID,onProgressUpdate: console.log,});console.log('上传结果:', uploadResult);process.exit();} catch (error) {console.error('上传失败:', error);process.exit(1);}
})();

package.json介绍

脚本参数说明
【cross-env NODE_ENV=xxxx】定义项目的全局变量,如果是vite或者其他方式大同小异。也有的公司直接暴力注释切换接口地址前缀
【cross-env CI_ROBOT_ID=xxxx】定义执行的机器人id。如:生产环境用机器人1,测试环境使用机器人2,方便快速切换体验版本

有兴趣可以查看

  1. React自定义环境变量node、cross-env、webpack等方式不同环境配置命令整理
    https://blog.csdn.net/weixin_44461275/article/details/122988359

  2. vue、react、uniapp配置全局域名、环境变量NODE_ENV、–mode区分开发环境和正式环境https://blog.csdn.net/weixin_44461275/article/details/122325488

若是taro、uni-app这种框架:
因为【project.config.json】配置项一般入口地址配置的是【“miniprogramRoot”: “dist/”】所以,ci构建前需要先打包,读取里面的一些配置项和信息。

{// ..."scripts": {"ci-build": "npm run build && cross-env NODE_ENV=production CI_ROBOT_ID=1 node ./miniprogram-ci/ci.js","ci-build:test": "npm run build-test && cross-env CI_ROBOT_ID=2 node ./miniprogram-ci/ci.js","build": "cross-env NODE_ENV=production taro build --type weapp","build-test": "cross-env NODE_ENV=test taro build --type weapp",},
}

若是原生小程序框架写的:

{// ..."scripts": {"ci-build": "cross-env NODE_ENV=production CI_ROBOT_ID=1 node ./miniprogram-ci/ci.js","ci-build:test": "cross-env CI_ROBOT_ID=2 node ./miniprogram-ci/ci.js",},
}

运维配置jekins打包配置项

提供给运维这些信息即可

  • git项目仓地址
  • 环境和分支信息
  • 打包命令

测试环境:

npm install --registry http://registry.npm.taobao.org
npm run ci-build:test

生产环境:

npm install --registry http://registry.npm.taobao.org
npm run ci-build

也可以本地电脑命令测试

效果显示

在这里插入图片描述

在这里插入图片描述

使用jekins比本地电脑稳定,且不关心打包过程中一直看守,更节省时间。如果没有jekins那就本地打包也一样,整个过程都不需要打开【微信开发者工具】。


http://www.ppmy.cn/embedded/128063.html

相关文章

mysql用户管理(user表列信息介绍,本质,管理操作),数据库的权限管理(权限列表,权限操作)

目录 用户管理 介绍 user表 介绍 列信息 Host User *_priv authentication_string 用户管理的本质 操作 创建用户 删除用户 修改用户信息 修改密码 自己修改 root用户修改指定用户的密码 数据库的权限 权限列表 给用户授权 查看权限 回收权限 刷新权限 …

idea中高级实用的调试技巧

1 条件断点&#xff0c;比如&#xff1a;遍历1个大List的过程中&#xff0c;想让断点停在某个特定值 /*** 1、条件断点*/Testpublic void test1() {for (int i 0; i < 10; i) {System.out.println(i);}} 2 异常断点&#xff0c;在程序中出现需要拦截的异常时&#xff0c;会…

python的异常处理

Python中的异常处理&#xff1a; try…except的语法结构为&#xff1a; try: 可能会抛出异常的代码 except 异常类型: 异常处理代码&#xff08;报错后执行的代码&#xff09; try…except…except的语法结构为&#xff1a; try: 可能会抛出异常的代码 except …

成都睿明智科技有限公司电商服务可靠不?

在这个短视频风起云涌的时代&#xff0c;抖音不仅成为了人们娱乐消遣的首选平台&#xff0c;更是众多商家竞相追逐的电商新蓝海。成都睿明智科技有限公司&#xff0c;作为抖音电商服务领域的佼佼者&#xff0c;正以其独到的洞察力和专业的服务&#xff0c;助力无数品牌在这片沃…

多态常见面试问题

1、什么是多态&#xff1f; 多态&#xff08;Polymorphism&#xff09;是面向对象编程中的一个重要概念&#xff0c;它允许同一个接口表现出不同的行为。在C中&#xff0c;多态性主要通过虚函数来实现&#xff0c;分为编译时多态&#xff08;静态多态&#xff09;和运行时多态…

多种方式连接和管理 Oracle 数据库详解

连接/管理方式描述优点缺点使用场景SQL*Plus命令行工具&#xff0c;用于执行SQL、PL/SQL以及各种Oracle命令。轻量级&#xff0c;无需图形界面&#xff1b;适合脚本自动化。用户界面不友好&#xff1b;功能相对有限。开发者快速查询&#xff0c;数据库维护。SQL Developer免费的…

开源 AI 智能名片 S2B2C 商城小程序源码:C 端用户连接的创新策略与价值

摘要 在数字化时代&#xff0c;企业与 C 端用户的连接至关重要。开源 AI 智能名片 S2B2C 商城小程序源码在连接 C 端用户方面展现出强大策略和巨大价值。其通过集客营销策略、创新开店模式、链动 21 模式与 S2B2C 商城模式以及多渠道方式连接 C 端用户。从策略上&#xff0c;内…

FreeRTOS应用开发学习

了解FreeRTOS 任务相关API FreeRTOS任务创建API FreeRTOS 中&#xff0c;任务的创建有两种方法&#xff0c;一种是使用动态创建&#xff0c;一种是使用静态创建。动态创建时&#xff0c;任务控制块和栈的内存是创建任务时动态分配的&#xff0c;任务删除时&#xff0c;内存可…