uni-app项目分包后子包中静态资源丢失
前情
uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app。
坑位
随着项目越做越大,发现小程序的包体积已经超过了小程序单包最高2M的限制,于是对项目进行了分包处理,在分包过种中真正占项目体积的其实是静态资源文件,所以在分包的时候自然也会把子包对应的静态资源文件放到子包中,发现子包无法访问到子包自己的静态资源文件。
Why?
对于这个问题当时是一脸蒙,于是我通过查看uppackage/dist/dev/mp-weixin最终输出文件,发现子包的静态文件并没有打包进来,应该是hbuilderx忽略了子包下的非页面目录。在论坛了解到,开启分包优化是会把子包的static打包过去的,但是分包优化又只支持mp-weixin
、mp-qq
、mp-baidu
、mp-toutiao
、mp-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+版本的插件来避开这个兼容问题。
uni-app项目分包后子包中静态资源丢失的更多相关文章
- web项目打包后在代码中获取资源文件
在web项目里面,有时代码里面需要引用一些自定义的配置文件,这些配置文件如果放在类路径下,项目经过打包后使用的相对路径也会发生变化,所以以下给出了三种解决方案. 一.properties下配置 在类路 ...
- Jar中的Java程序如何读取Jar包中的资源文件
Jar中的Java程序如何读取Jar包中的资源文件 比如项目的组织结构如下(以idea中的项目为例): |-ProjectName |-.idea/ //这个目录是idea中项目的属性文件夹 |-s ...
- 读取Jar包中的资源问题探究
最近在写一个可执行jar的程序,程序中包含了2个资源包,一个是images,一个是files.问题来了,在Eclipse里开发的时候,当用File类来获取files下面的文件时,没有任何问题.但是当程 ...
- java 从jar包中读取资源文件
在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Jav ...
- (转)java 从jar包中读取资源文件
(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...
- 深入jar包:从jar包中读取资源文件getResourceAsStream
一.背景 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等). 在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不 ...
- [Java基础] 深入jar包:从jar包中读取资源文件
转载: http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的 ...
- 深入jar包:从jar包中读取资源文件
我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...
- 【解惑】深入jar包:从jar包中读取资源文件
[解惑]深入jar包:从jar包中读取资源文件 http://hxraid.iteye.com/blog/483115 TransferData组件的spring配置文件路径:/D:/develop/ ...
- Java如何获取当前的jar包路径以及如何读取jar包中的资源
写作业的时候要输出一个record.dat文件到jar包的同级目录,但是不知道怎么定位jar包的路径.百度到的方法不很靠谱,所以在这里记录一下. 一:使用类路径 String path = this. ...
随机推荐
- 浏览器原生组件 shadow DOM(已完成)
https://developer.mozilla.org/zh-CN/docs/Web/Web_Components/Using_shadow_DOM Web components 的一个重要属性是 ...
- Vue 调用后台接口导出Excel
vue 调用后台接口生成 Excel 咱也不会前端,就是现学现卖. Js export function exportOnlyB(reportId) { return request({ url: & ...
- 将 LLMs 精调至 1.58 比特: 使极端量化变简单
随着大语言模型 (LLMs) 规模和复杂性的增长,寻找减少它们的计算和能耗的方法已成为一个关键挑战.一种流行的解决方案是量化,其中参数的精度从标准的 16 位浮点 (FP16) 或 32 位浮点 (F ...
- 理解 Vue 的 setup 应用程序钩子
title: 理解 Vue 的 setup 应用程序钩子 date: 2024/9/30 updated: 2024/9/30 author: cmdragon excerpt: 摘要:本文详细介绍了 ...
- Android Perfetto 系列 1:Perfetto 工具简介
2019 年开始写 Systrace 系列,陆陆续续写了 20 多篇,从基本使用到各个模块在 Systrace 上的呈现,再到启动速度.流畅性等实战,基本上可以满足初级系统开发者和 App 开发者对于 ...
- 007 Python、Anaconda、pip、Pycharm、Jupyter都是啥?
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- Docker升阶
一.Docker镜像 镜像的定义:镜像是一种轻量级.可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码.运行时需要的库以及环境变量和 ...
- KubeSphere 使用 OpenLDAP 进行统一认证完全指南
作者:申红磊,青云QingCloud 容器解决方案架构师,开源项目爱好者,KubeSphere Member. 背景 在实际使用中,会有一些用户,在不同场景中经常碰到 OpenLDAP 对接问题: 能 ...
- 卧槽,WebStorm现在免费啦!
前言 就在昨天1024程序员节,JetBrains突然宣布WebStorm现在对非商业用途免费啦.以后大家再也不用费尽心思的去找破解方法了,并且公告中的关于非商业用途定义也很有意思. 关注公众号:[前 ...
- Docker Compose容器编排--项目五
一.Docker Compose概念 Docker Compose (可简称Compose)是一个定义与运行复杂应用程序的 Docker 工具,是 Docker 官方 编排(Orchestration ...