微信小程序: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%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.rhkb.cn/news/448858.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ETL技术在金蝶云星空与旺店通WMS集成中的应用

金蝶云星空数据集成到旺店通WMS的技术案例分享 在数字化转型的背景下,现代企业对系统间的数据集成需求日益增加。本篇文章将以“组装入库>其他入库单-1”方案为例,详细解析如何通过轻易云数据集成平台,实现金蝶云星空与旺店通WMS之间的数…

大数据-174 Elasticsearch Query DSL - 全文检索 full-text query 匹配、短语、多字段 详细操作

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

【软件工程】软件工程入门

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

海绵宝宝动画网页

适合学习、作业、小白 部分代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>海绵宝宝-首页</title><link rel"stylesheet" type"text/css" href"css/style.css"/><me…

国外电商系统开发-运维系统应用和软件安装过程

安装流程图 注意&#xff1a;上面只是作者本人安装Apache的举例&#xff0c;如果您的安装步骤不相同都没关系&#xff0c;您完全可以自行定义。在这里只是为了演示而已。 现在&#xff0c;开始创建任务&#xff1a; 点击添加步骤任务&#xff1a; 现在&#xff0c;可以看到页面…

金融信用评分卡建模项目:AI辅助

最近我一直忙着开发一个信用评分卡建模工具&#xff0c;所以没有时间更新示例或动态。今天&#xff0c;我很高兴地跟大家分享&#xff0c;这个工具的基本框架已经完成了&#xff0c;并且探索性的将大语言模型&#xff08;AI&#xff09;整合了进去。目前ai在工具中扮演智能助手…

Gradio 全指南 | 轻松构建和托管机器学习界面

唠唠闲话 Gradio 是专为机器学习设计的轻量级 Python 库&#xff0c;它以简洁直观的方式将机器学习模型与用户界面相结合。利用 Gradio&#xff0c;用户可以轻松地通过图形界面输入数据并查看模型输出。此外&#xff0c;Gradio 还具备分享功能&#xff0c;极大地简化了模型在网…

c语言库文件

c语言库文件 动态库动态库制作首先生成动态库文件名使用动态库编译动态库运行删除动态库1.sudo su 静态库静态库制作需要将源文件.c转换成二进制文件.o&#xff08;重定向文件&#xff09;将重定向文件打包成静态库文件使用静态库文件 静态库和动态库的区别复杂工程设定工程目录…

MySQL【知识改变命运】07

MySQL 1&#xff1a;Group by 分组查询1.1&#xff1a;语法&#xff1a;1.2&#xff1a;练习 2&#xff1a;having⼦句3回顾&#xff1a;3&#xff1a;内置函数3.1 :⽇期函数 1&#xff1a;Group by 分组查询 可以根据某列&#xff0c;进行分组查询&#xff0c;比如学校里面的…

NAT:网络地址转换

基本知识 1.公有IP和私有IP 公有IP:全球唯一&#xff0c;可以在互联网中通信&#xff0c;付费使用 私有IP&#xff1a;本地唯一&#xff0c;不可以在互联网中使用&#xff0c;无需付费 私网地址范围 A类: 10.0.0.0-------10.255.255.255 B类&#xff1a;172.16.0.0------1…

汽车免拆诊断案例 | 2023款零跑C01纯电车后备厢盖无法电动打开和关闭

故障现象  一辆2023款零跑C01纯电车&#xff0c;累计行驶里程约为2万km&#xff0c;车主进厂反映&#xff0c;后备厢盖无法电动打开和关闭。 故障诊断  接车后试车&#xff0c;操作后备厢盖外侧、驾驶人侧及遥控钥匙上的后备厢盖开启按钮&#xff0c;可以听到后备厢盖解锁的…

springboot项目中开启mybatis的sql日志

在 application.yml 文件中 添加 mybatis-plus 配置&#xff0c;再重启项目&#xff0c;这里用到了mybatis-plus的自带sql日志打印 # application-jdbc.yml mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl如果只是用的mybatis的话&#x…

React(五) 受控组件和非受控组件; 获取表单元素的值。高阶组件(重点),Portals; Fragment组件;严格模式StrictMode

文章目录 一、受控组件1. 什么是受控组件2. 收集input框内容3. 收集checkBox的值4. 下拉框select总结 二、非受控组件三、高阶组件1. 高阶组件的概念 (回顾高阶函数)2. 高阶组件应用&#xff1a;注入props(1) 高阶组件给---函数式组件注入props(2) 高阶组件给---类组件注入prop…

Qt-链接数据库可视化操作

1. 概述 Qt 能够支持对常见数据库的操作&#xff0c;例如&#xff1a; MySQL、Oracle、SqlServer 等等。 Qt SQL模块中的API分为三层&#xff1a;驱动层、SQL接口层、用户接口层。 驱动层为数据库和SQL接口层之间提供了底层的桥梁。 SQL接口层提供了对数据库的访问&#xff0…

Excel多级结构转成树结构形式

第一步&#xff1a;Excel文件的形式如下 第二步&#xff1a;转换成树结构可选形式 第三步&#xff1a;具体怎么实现&#xff1f; &#xff08;1&#xff09;、需要借助数据库中表来存储这些字段&#xff0c;一张表&#xff08;aa&#xff09;存Excel文件中的所有数据&#xff…

基于百度智能体开发爱情三十六计

基于百度智能体开发爱情三十六计 文章目录 基于百度智能体开发爱情三十六计1. 爱情三十六计智能体2. 三十六计开发创意3. 智能体开发实践3.1 基础配置3.2 进阶配置3.3 调优心得3.4可能会遇到的问题 4. 为什么选择文心智能体平台 1. 爱情三十六计智能体 爱情三十六计 是一款基于…

《计算机视觉》—— 基于PyCharm中的dlib库实现人脸关键点定位

文章目录 1. 安装必要的库2. 下载dlib的人脸检测器和关键点预测器模型3. 编写代码 人脸关键点定位是指通过计算机视觉技术&#xff0c;识别和定位人脸图像中的关键点&#xff0c;如眼睛、鼻子、嘴巴等特定位置。这些关键点的准确定位对于人脸识别、表情分析、姿态估计等应用具有…

分库分表方式介绍

分库分表方式 分库分表包括分库和分表两个部分&#xff0c;在生产中通常包括&#xff1a;垂直分库、水平分库、垂直分表、水平分表四种方式&#xff1b; 1、垂直分表 1.1 垂直分表定义 垂直分表就是在同一数据库内将一张表按照指定字段分成若干表&#xff0c;每张表仅存储其…

Unity中实现预制体自动巡逻与攻击敌人的完整实现指南

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

wireshark 解密浏览器https数据包

一、导出浏览器证书有两种方法 1、在浏览器快捷方式追加启动参数&#xff1a; --ssl-key-log-file"d:\log\2.log" C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe --ssl-key-log-file"d:\log\2.log" 2、环境变量中新建用…