uniapp wgt多环境打包与调试插件——uni-packing-wgt

文章目录

    • 背景介绍
    • 安装与使用

背景介绍

由于官方的HBuilderX编译器打包wgt每次都要手动的操作有些繁琐,也不支持多环境打包,在开发阶段与原生项目交互调试是极其不方便。而uni-packing-wgt正好可以解决这些问题。

uni-packing-wgt是uniapp跨平台多环境资源打包、调试、发布的插件工具。业内首款开源的wgt多环境打包插件。

主要特性:

  • 支持同时构建多个环境资源(dev、beta、release)包,也包括了wgt包。
  • 支持上传发布到七牛云平台,其他云平台暂不支持,支持七牛文件CDN缓存刷新。
  • 在构建资源包时也可以同步内置到原生项目上,方便在开发阶段与原生间的交互调试。
  • 支持版本号自增,如果在原生项目上内置资源包调试,此时可用上,因为内置资源包调试版本号必须增加才会生效。

工具仅限于vite cli创建的项目使用,不支持HBuilderX创建的项目。

安装与使用

安装:

npm i uni-packing-wgt

1、在package.json中配置uniapp的打包命令,如下:

"build:app-plus-dev": "uni build -p app-plus --mode development --outDir=./dist/dev/app",
"build:app-plus-beta": "uni build -p app-plus --mode beta --outDir=./dist/beta/app",
"build:app-plus-release": "uni build -p app-plus --mode production --outDir=./dist/release/app"

其中developmentbetaproduction是vite多环境配置的文件名,vite必须遵守这种命名规范,不然脚本会执行失败。

2、执行build-wgt命令生成uniapp资源包和wgt包

如果是在vscode和命令终端上运行命令,记得加上npx,即npx build-wgt, WebStorm则不用。

在初次执行命令时,会在项目根目录创建三个配置文件,可根据需求自由配置:

  • config.json:常规配置,比如运行环境、版本管理、文件拷贝、上传等管理
  • config-output.json:配置文件拷贝的输入、输出目录,用于uni模块在dev环境与原生资源同步调试
  • config-release.json:发布环境的配置,比如cdn缓存、后台配置同步的管理

config-output.json和config-release.json文件记得在.gitignore配置忽略不用提交,每个开发者的参数是不一样的。

config.json

{"runDev": true, // 指定打包的环境"runBeta": false,"runRelease": false,"refreshUrl": true, // 是否刷新七牛cdn缓存 "isIncrementVersion": true, // 版本是否自增"uploadWgtPackage": false, // wgt包是否上传到云平台上,需要结合upload参数使用"pkgCopyToNativeDir": false, // 是否将资源包同步到原生项目上,需要在config-output.json配置路径"upload": {  // 七牛配置参数"devAccessKey": "","devSecretKey": "","devBucket": "","devDomainName": "","devDir": "app"}}

生成环境的七牛参数需要在config-release.json#upload配置,如果是外部使用,其他参数无须配置。

在打包资源同步到原生项目中调试,需要在config-output.json文件中配置原生项目的目标目录。以Android为例:

同步到原生项目中调试,需要版本自增才会生效,把isIncrementVersion设置true即可。

{"sourceDir": "./dist/dev/app","targetDir": "替换成项目路径/app/src/main/assets/apps/替换成uniAppId/www"
}
  • sourceDir: 是uniapp的资源包的相对路径,默认是./dist/dev/app
  • targetDir: 原生项目的路径,建议放绝对路径。

以dev环境为例,控制台输出结果:

hzwei@HZWeis-Mac-mini uni-mall-staff % build-wgt======开始生成资源包=====
======资源包生成完成=====
======资源包开始压缩=====
{ status: 'fulfilled', value: './dist/dev/__UNI__xxxx60.wgt' }
======资源包压缩任务完成=====
======资源包开始复制=====
{hash: 'Fop4lZ8NADlAsThMVWIiTjoTh_JT',key: 'app/dev/__UNI__xxxx60.wgt'
}
前往刷新url:  https://xxxx.com/app/dev/__UNI__xxxx60.wgt
======资源包上传完成=====

源码传送门

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

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

相关文章

数据传输安全(为支付宝第三方做铺垫)

加解密:防止被拦截看到敏感信息 身份认证:防止伪造 签名 不可逆的加密技术 不可逆加密技术不能用于传输数据,一般用于用户注册,对用户的密码加密 只能加密不能解密,常见算法md5,用户注册加密不能解密&a…

嵌入式linux系统中LCD屏驱动实现思路分析

在 Linux 下 LCD 的使用更加广泛,在搭配 QT 这样的 GUI 库下可以制作出非常精美的 UI 界面。接下来就来学习一下如何在 Linux 下驱动 LCD 屏幕。 第一:Framebuffer设备简介 先来回顾一下裸机的时候 LCD 驱动是怎么编写的,裸机 LCD 驱动编写流程如下: ①、初始化 I.MX6U 的…

Selenium WebDriver - 网络元素

本文翻译整理自:https://www.selenium.dev/documentation/webdriver/elements/ 文章目录 一、文件上传二、定位策略1、传统定位器2、创建定位器3、类名4、CSS选择器5、id6、NAME7、链接文本8、部分链接文本9、标签名称10、xpath11、相对定位器它是如何工作的可用相对…

three.js 第八节 - gltf加载器、解码器

// ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入hdr加载器(专门加载hdr的) import { RGBELoader } from three/examples/jsm/loaders…

replaceAll的用法总结

replaceAll 的用法总结 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来详细讲解一下Java中常用的字符串操作方法之一——replaceAll。replaceAll方法…

Ubuntu开机后图像化界面消失只有命令行界面

ubuntu重新安装cpp库时突然黑屏,打开之后,只能手动输入用户名和密码才能登陆,当时最坏的结果就是重新安装系统,但是还是得抢救一下,万幸的是抢救成功了!!! 于是来到第一个博客 参考…

npm全局安装依赖指定存放文件目录

引言 学校机房,每次默认在c盘装完 电脑关机重启都得重新安装,十分麻烦 1-创建依赖安装/缓存目录 2-打开终端输入设置安装目录位置的命令 npm set cache \你创建的缓存文件目录\ npm set prefix \你创建的global全局安装依赖文件目录\至此以后npm -g 依…

自动驾驶仿真Carla -ACC功能测试

我将详细说明如何使用Carla进行ACC(自适应巡航控制)测试,确保每个步骤贴合实际的Carla自动驾驶仿真标准,并提供相应的代码示例。 使用Carla进行ACC测试的步骤: 1. 环境设置和启动Carla 首先,确保你已经安装…

StudentController

目录 1、 StudentController 1.1、 RegistrationForm 1.1.1、 // Save data to database 1.1.2、 // Generate tracking ID 1.1.3、 // Store tracking ID along with registration details

AI学习指南机器学习篇-朴素贝叶斯模型训练与预测

AI学习指南机器学习篇-朴素贝叶斯模型训练与预测 介绍 在机器学习领域,朴素贝叶斯模型是一种常用的分类算法,其原理简单、实现容易,并且在一些应用场景中取得了不错的效果。本篇博客将详细介绍朴素贝叶斯模型的训练过程和预测过程&#xff…

巴鲁夫MacroBuilder2.0.0.0软件巴鲁夫和使用手侧

巴鲁夫MacroBuilder2.0.0.0软件巴鲁夫和使用手侧

Linux下多进程访问同一个共享库处理流程

两个测试程序实现调用同一个SO库: ​​​​​​​ #include <stdio.h> #include "a/a.h" #include <unistd.h> int main() { int a = 4,b = 5; sum(a, b); int ret = get(); printf("ret=%d\n", ret); sleep(100)…

数据库新技术【分布式数据库】

文章目录 第一章 概述1.1 基本概念1.1.1 分布式数据库1.1.2 数据管理的透明性1.1.3 可靠性1.1.4 分布式数据库与集中式数据库的区别 1.2 体系结构1.3 全局目录1.4 关系代数1.4.1 基操1.4.2 关系表达式1.4.3 查询树 第二章 分布式数据库的设计2.1 设计策略2.2 分布设计的目标2.3…

【Linux】基础IO_2

文章目录 六、基础I/O2. 系统文件I/O磁盘的存储结构 未完待续 六、基础I/O 2. 系统文件I/O 磁盘的存储结构 系统中不是所有对文件都是打开的状态&#xff0c;大部分的文件都是没有被打开的。这些文件一般都被存储在磁盘当中。磁盘通过柱面&#xff0c;扇面&#xff0c;扇区确…

Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

初始化数据 */ private void initData(Bundle savedInstanceState) { if (savedInstanceState ! null) mDatas savedInstanceState.getStringArrayList(“mDatas”); if (mDatas null) { mLoadingDialog new LoadingDialog(); mLoadingDialog.show(getFragmentMana…

Renesas MCU使用定时器之实现1ms定时中断

目录 概述 1 软硬件介绍 1.1 软件版本信息 1.2 硬件介绍 2 FSP配置项目 2.1 项目参数配置 2.2 配置定时器参数 3 功能实现 3.1 软件架构实现 3.2 实现功能函数 4 测试 概述 本文主要介绍使用Renesas MCU定时器之实现1ms定时中断功能&#xff0c;文中介绍使用FSP配…

深入探索项目中关于Java 8 Stream API使用

目录 1. 数据清洗与预处理2. 统计分析3. 数据转换与导出4. 复杂逻辑处理5. 并行处理 在实际项目中&#xff0c;Java 8的Stream API可以广泛应用于各种数据处理场景&#xff0c;以下是一些具体的应用实例&#xff0c;这些例子不仅展示了Stream API的灵活性&#xff0c;也体现了它…

理解 iOS 开发中的 NS_ENUM 和 NS_OPTIONS

在开发 iOS 应用程序时&#xff0c;理解 NS_ENUM 和 NS_OPTIONS 的使用至关重要&#xff0c;因为它们在定义和管理枚举和选项方面起着重要作用。在本文中&#xff0c;我们将深入探讨 NS_ENUM 和 NS_OPTIONS 之间的区别、使用场景以及如何有效地实现它们。 NS_ENUM NS_ENUM 用…

对兼容各操作系统的Anki选择题模板的更新——提供更方便的笔记修改功能

2021年当我想做一个兼容各操作系统的Anki选择题模板的时候&#xff0c;到处搜索茧中网&#xff0c;根本找不到相关内容&#xff0c;直到偶然在github上看到Simon Lammer的Anki持久化模块&#xff0c;才算真正实现。现在再在茧中网上搜索兼容各种操作系统的Anki选择题模板&#…

Android蓝牙开发(一)之打开蓝牙和设备搜索

private BluetoothManager bluetoothmanger; private​ BluetoothAdapter bluetoothadapter; /** 判断设备是否支持蓝牙 */ bluetoothmanger (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); bluetoothadapter bluetoothmanger.getAdapter(); if (bl…