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

微信小程序: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%A1
  appid: config.appid, // 小程序appid
  type: '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%AE
        es6: 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那就本地打包也一样,整个过程都不需要打开【微信开发者工具】。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/895334.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

揭秘Map与Set的键值奥秘与集合魅力,解锁高效数据魔法

文章目录 前言➰一、关联式容器1.1 关联式容器的概述1.2 关联式容器的工作原理1.3 关联式容器的核心特性 ➰二、键值对2.1 键值对的基本概念2.2 键值对在C中的实现 ➰三、树形结构的关联式容器3.1 树形结构的特点3.2 使用场景 ➰四、set的使用与定义4.1 set的基本特性4.2 set的…

centOS实用命令

一、查看进程,端口占用 netstat命令(window和linux通用,细节不同) 查看端口占用(linux) netstat -ano |grep 8080查看端口占用(window) netstat -ano |findstr 8080ps命令 可以直接使用ps aux查看所有用户的进程信息 一些参数 参数解释-p根据进程P…

【D3.js in Action 3 精译_034】4.1 D3 中的坐标轴的创建(中篇):定义横纵坐标轴的比例尺

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可…

企业资产安全之数据防泄密要领

在数字化时代,数据已成为企业最宝贵的资产之一。然而,随着数据价值的增加,数据泄露的风险也随之上升。从内部员工的无意泄露到外部黑客的恶意攻击,企业数据安全面临着前所未有的挑战。SDC沙盒数据防泄密解决方案,正是为…

用 Python 构建高级配对交易策略

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话: 本文阐述通过分析加密货币和传统金融工具之间的相关性和协整性,以及实施 Z-score 方法来生成交易信号,然后介绍如何使用 Python 构建配对交易策…

无人机搭载激光雷达在地形测绘中的多元应用

一、高精度地形测量 无人机激光雷达能够发射激光脉冲并接收其回波,通过精确计算激光脉冲的往返时间来确定目标物的距离。这一特性使得无人机激光雷达在地形测绘中能够实现高精度的三维地形测量。通过快速获取大量地形数据,可以生成高精度的数字高程模型…

VScode背景更改

效果 实现方法 第0步 以管理员身份运行VScode 首先 需要安装这个扩展 然后 接下来 找到配置文件 再后来 在配置文件的下面但不超过最后一个大括号的地方加入以下内容 "update.enableWindowsBackgroundUpdates": true,"background.fullscreen": {…

Gee引擎配置微端后登录游戏黑屏怎么办?

GEE引擎配置微端后登录游戏黑屏怎么办?今天飞飞和你们分享GEE引擎配置微端后游戏黑屏的解决办法,希望可以帮助到你~ 1、端口不对 微端没有更新,玩家进入游戏是地图跟装备都看不见,是漆黑的,微端显示连接失败&#xff…

Leecode刷题之路第26天之删除有序数组中的重复项

题目出处 26-删除有序数组中的重复项-题目出处 题目描述 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元…

鸿蒙网络编程系列31-使用RCP调用OpenAI接口实现智能助手

简介 在OpenAI推出GPT系列大模型以后,市场上各种类似的大模型也层出不穷,这些大模型也基本都会兼容OpenAI的接口,在开发基于大模型的应用时,选择使用OpenAI接口作为和后端大模型通讯的标准,可以更好的适配不同厂家的模…

2024年五一杯数学建模C题煤矿深部开采冲击地压危险预测求解全过程论文及程序

2024年五一杯数学建模 C题 煤矿深部开采冲击地压危险预测 原题再现: “煤炭是中国的主要能源和重要的工业原料。然而,随着开采深度的增加,地应力增大,井下煤岩动力灾害风险越来越大,严重影响着煤矿的安全高效开采。在…

一个人如何开发一款App软件

个人开发软件和公司开发软件不一样,其中就是收费上,个人开发的费用低,售后服务态度好啊。一个人负责开发也负责售后,客户就你一个。一般都是工作室和个人接单的多,不是太大的项目就建议是个人开发吧,因为能…

网络编程(21)——通过beast库快速实现http服务器

目录 二十一、day21 1. 头文件和作用域重命名 2. reponse时调用的一些函数 3. http_connection a. 构造函数 b. start() c. process_request() d. create_response() e. create_post_response() f. write_response() 4. Server 5. 主函数 6. 测试 1)测…

零基础入门人工智能,如何利用AI工具提升你的学习效率?

在这个信息爆炸的时代,人工智能(AI)不仅是技术行业的热词,更是我们日常生活中不可或缺的部分。你是否也想过,如何更有效地学习和利用这些强大的AI工具来提升自己的学习效率?今天,我们将介绍六款…

electron本地OCR实现

使用tesseract.js - npm (npmjs.com) 官方demo&#xff1a;GitHub - Balearica/tesseract.js-electron: An example to use tesseract.js in electron 目录结构&#xff1a; // 引入 <script type"module" src"./ocr/tesseract.js"></script>…

垃圾收集器与内存分配机制(三)

目录 学习前言 一、低延迟垃圾收集器 1. Shenandoah收集器 二、ZGC 1. 内存布局 2. 更巧妙的并发整理 三、其他垃圾收集器 学习前言 除了之前我们所学习的经典垃圾收集器除外&#xff0c;我们还有一些低延迟垃圾收集等&#xff01; 之前所学经典垃圾收集器&#xff0c;…

ubuntu 安装nginx

sudo apt-get update sudo apt-get install nginx sudo nginx -vsudo systemctl status nginx sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx#浏览器输入&#xff1a;http://192.168.31.181/#查看文件结构 cd /etc/nginx sudo cp nginx.…

瑞云快图云渲染怎么样?渲染一张图贵吗?

在如今的数字时代&#xff0c;云渲染已经成为了设计师和建筑师们不可或缺的工具。而瑞云快图作为一款备受瞩目的云渲染平台&#xff0c;以其出色的性能和实惠的价格吸引了众多用户。 那么&#xff0c;瑞云快图云渲染究竟怎么样&#xff1f;渲染一张图贵吗&#xff1f;本文将为…

kernel32.dll下载地址:如何安全地恢复系统文件

关于从网络上寻找kernel32.dll的下载地址&#xff0c;这通常不是一个安全的做法&#xff0c;而且可能涉及到多种风险。kernel32.dll是Windows操作系统的核心组件之一&#xff0c;负责内存管理、进程和线程管理以及其他关键系统功能。因为kernel32.dll是系统的基础文件&#xff…

初试PostgreSQL数据库

文章目录 一、PostgreSQL数据库概述1.1 PostgreSQL的历史1.2 PostgreSQL安装1.3 安装PostgreSQL二、PostgreSQL起步2.1 连接数据库2.1.1 SQL Shell2.1.2 执行SQL语句2.2 pgAdmin 42.2.1 打开pgAdmin 42.2.2 查找数据库2.2.3 打开查询工具2.2.4 执行SQL语句三、实战小结文章目录…