首页 > 其他分享 >uni-app项目分包后子包中静态资源丢失

uni-app项目分包后子包中静态资源丢失

时间:2024-06-03 19:45:18浏览次数:11  
标签:包中 plugin 静态 app webpack 分包 后子 copy mp

前情

uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app。

坑位

随着项目越做越大,发现小程序的包体积已经超过了小程序单包最高2M的限制,于是对项目进行了分包处理,在分包过种中真正占项目体积的其实是静态资源文件,所以在分包的时候自然也会把子包对应的静态资源文件放到子包中,发现子包无法访问到子包自己的静态资源文件。

Why?

对于这个问题当时是一脸蒙,于是我通过查看uppackage/dist/dev/mp-weixin最终输出文件,发现子包的静态文件并没有打包进来,应该是hbuilderx忽略了子包下的非页面目录。在论坛了解到,开启分包优化是会把子包的static打包过去的,但是分包优化又只支持mp-weixinmp-qqmp-baidump-toutiaomp-kuaishou几个平台。

解决方案

方案1(推荐)

其实uniapp官方应该是做了特殊处理,只要你子包的静态资源放到static下,我一开始把静态文件都放到assets下了导致文件丢失,你无需开启什么分包优化也是可以自动打包过去的,至少目前我测了微信,支付宝,京东都是没有问题

方案2

修改vue.config.js配置,通过copy-webpack-plugin插件让webpack拷贝到指定子包里来解决资源丢失的问题。

示例代码如下(此处假设我的子包目录为packageOrderForm)

const CopyWebpackPlugin = require('copy-webpack-plugin')

module.exports = {
	...
	configureWebpack: {
			plugins: [
				new CopyWebpackPlugin([
						{
							from: path.join(__dirname, '/packageOrderForm/assets'),
							to: path.join(__dirname+'/unpackage/', 'dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, '/packageOrderForm/assets')
						}
					])
			]
		},
		...
}

注:因为uniapp vue2项目使用的webpack版本较低,你不能直接npm i copy-webpack-plugin安装,会不兼容,你可以通过npm i copy-webpack-plugin@5来安装5+版本的插件来避开这个兼容问题。

标签:包中,plugin,静态,app,webpack,分包,后子,copy,mp
From: https://www.cnblogs.com/xwwin/p/18229499

相关文章

  • 搭子交友app小程序,陪玩师接私单线下陪玩APP平台损失惨重!如何避免这种现象?
    陪玩平台在经营过程中,面临着一个非常棘手的问题,那就是顾客和陪玩师之间的过度熟悉。这个问题看似微不足道,但实际上却对平台的长期稳定运营构成了巨大的威胁。那么,为什么陪玩平台会如此头疼顾客和陪玩师的互相熟悉呢?这其中的原因值得我们深入探讨。首先,我们需要了解的是,当顾客......
  • 搭子交友app小程序,线下陪玩系统选择:价钱并非唯一标准,功能全面才是关键!
    在当今社会,随着科技的发展和人们生活水平的提高,陪玩行业逐渐兴起。为了满足市场需求,各种各样的陪玩系统应运而生。然而,面对市场上琳琅满目的陪玩系统,消费者往往陷入了一个误区:过分追求价格。事实上,这种选择方式往往会让消费者陷入困境,甚至成为各个软件公司的冤大头。那么,如何在......
  • uniapp微信小程序获取手机号 位置信息
    一.获取手机号获取手机号<template><u-buttonopen-type="getPhoneNumber"@getphonenumber="getNumber">一键登录</u-button></template><script>exportdefault{methods:{getNumber(e){......
  • ADB导出app到电脑生成apk文件
    查找需要导出应用的包名方法一:查找设备上所有应用包名adbshellpmlistpackage方法二:监控设备接下来打开的应用adbshellammonitor查找应用备份包位置adbshellpmpath包名导出文件到电脑adbpull备份包位置本机存放文件地址示例:adbpull/data/app/~~pnUI_O......
  • 校园圈子系统--自带校园跑腿功能,校园交友,校园陪玩,校园交友墙,地图找伴,二手市场等功能。
    一、需求分析在搭建校园论坛平台之前,我们需要进行详细的需求分析。这包括以下几个方面:1.用户需求我们需要了解目标用户群体的需求和喜好,包括学生的年龄层次、兴趣爱好、关注话题等。通过调查问卷、访谈等方式收集用户需求,为平台开发提供依据。2.功能需求根据用户需求,我们......
  • ABC 313C Approximate Equalization 2
    题意现在给出一个数组a[n],现在你可以进行这种操作:选择i,j(1<=i,j<=n),使得a[i]=a[i]-1,a[j]=a[j]+1现在你可以进行无限次这种操作,现在需要你求出最少次数,使得数组中的最大值与最小值之间的差不超过1。思路我们考虑到每一次操作可以使得数组中的一个数加一,另一个数减一,那么无......
  • Python3 笔记:extend()、append() 和 +号 的区别
    1、extend()可以向一个列表中添加另外一个列表中的所有元素。list1=[1,2,3,4]list2=[3,4,5,6]list1.extend(list2)print(list1) #运行结果:[1,2,3,4,3,4,5,6]print(list2) #运行结果:[3,4,5,6]2、append()用于向列表末尾添加元素。list1=[1,2,3,4]li......
  • 计算机毕业设计Android的个人日程计划系统的APp设计与实现
    1、选题背景如今,安卓手机的使用基本上已经广泛应用各个年龄段,也就是说当人们充分接触手机时,在享受手机带来的方便快捷和沟通乐趣时,也存在一些问题,主要表现在“手机”上。人们使用手机的时间越来越长,他们也觉得时间越来越短。时间就是金钱,这是当今社会普遍认可的事实,也就是说人......
  • 计算机毕业设计Android的健康运动计步器APP的设计
    基于Android的健康计步APP可以包含以下功能模块:移动端应用(Android前端)功能模块:(1)用户注册和登录功能:•   用户注册:用户可以输入用户名、密码和其他必要信息进行注册,并将注册信息保存到数据库中。•   用户登录:用户可以使用用户名和密码进行登录,验证用户凭据,以便访问......
  • Spring Boot使用GraalVM编译为native excutable app的日志示例及主要步骤说明
    日志示例[INFO]---native-maven-plugin:0.9.28:compile(default-cli)@my-app---[INFO]FoundGraalVMinstallationfromGRAALVM_HOMEvariable.[INFO][graalvmreachabilitymetadatarepositoryforch.qos.logback:logback-classic:1.4.14]:Configurationdirector......