当前位置: 首页 > 知识库问答 >
问题:

vue.js - 如何在Vue3+Vite+Ts+TailwindCSS项目中正确打包静态资源?

那安宁
2024-03-31

我想做一个UI组件,然后使用的是Vue3+Vite+Ts+tailwindcss
问题出现在这个静态资源这里,我的静态资源放在了src/assets下,包括图片还有style.css,

@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800&family=Noto+Color+Emoji&family=Noto+Sans+SC:wght@100;200;300;400;500;600;700;800;900&family=Nunito:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;0,1000;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900;1,1000&display=swap");@tailwind base;@tailwind components;@tailwind utilities;

然后我使用Vite的库模式打包,并没有打包我的style.css文件,只打包了vue文件中的style标签的css,并且静态文件的图片也是没有打包,而是直接转换成了base64,对于图片多的情况下,这样页面会很卡顿,我想知道怎么解决呢?

网上搜索的方法都尝试过,发现并没有作用

共有2个答案

申屠英韶
2024-03-31
  1. 猜测你的 style.css 没有 import,所以 vite 认为不需要,就没打包
  2. 图片 base64 不会导致卡顿,最多就是加载时间变长
  3. 你可以调整 build.assetsInlineLimit 配置要求 vite 不要 inline 小资源。
勾学博
2024-03-31

在 Vite 项目中,静态资源的处理是自动的,它会将小于某个阈值(默认为 4KB)的图片等资源转为 base64 格式内嵌到 JavaScript 中。这个阈值可以在 vite.config.tsvite.config.js 文件中通过 optimizeDeps.includeoptimizeDeps.exclude 进行配置。

对于你提到的 style.css 文件未被打包的问题,这可能是因为在 Vite 中,CSS 文件需要被导入到 JavaScript 或 Vue 文件中才会被处理。你可以尝试在你的 Vue 文件中导入这个 CSS 文件,如下:

import './assets/style.css'

对于图片,如果你不希望它们被转为 base64 格式,你可以尝试以下步骤:

  1. vite.config.tsvite.config.js 文件中,调整 build.rollupOptions.output 配置项,将 assets 设置为 'inline' 以外的值,例如 'copy'。这样 Vite 将会复制大于阈值的静态资源到输出目录,而不是将它们转为 base64。
// vite.config.ts 或 vite.config.jsexport default {  build: {    rollupOptions: {      output: {        assets: 'copy',      },    },  },}
  1. 确保你的静态资源在 src/assets 目录下,且你的项目结构正确。例如,如果你的 style.css 文件中引用了图片,那么这些图片应该放在与 style.css 同一目录下。

以上步骤应该可以帮助你解决静态资源打包的问题。如果问题依然存在,请检查你的项目配置和代码,确保没有遗漏或错误。

 类似资料:
  • Vite + Vue3 + Electron 打包后静态资源路径错误 图片 src 如果是动态拼接的话,路径指向会出现问题 第一个路径不正确:file:///G:/vite.svg 第二个路径为:file:///G:/vite-electron/release/win-unpacked/resources/app.asar/dist/vite.svg 还有这种字体文件导入也会出现问题,类似上面直接

  • 问题内容: 我知道还有其他针对同一问题的问题,但问题是解决方案对我不起作用。我有一个小工具,它应该读取我想拥有的文件并将其打包为资源,并依赖于其他我希望将其作为jar而不是单个类的项目(我正在使用Eclipse Helios)。 作为Eclipse中的应用程序,我可以通过以下方式访问资源 当且仅当将资源文件夹放置在输出路径(已编译的源)下时,并且如果将其放置在src文件夹中时,则不是这样。 当我打

  • 使用 vite 打包组件库,在新的项目中使用时报错 下面是打包后的产物 pe 和 dn 找不到导致项目启动时就报错, 手动再新起一个别名时会结局此问题 vite.config.ts 配置如下 请问这个问题该怎么解决

  • 这个所属公司里面我想动态添加几个从接口获取的二级行业并且生成对应的路由点击跳转不同的页面,这个在vue3和vite项目中要怎么实现呢 就比如这种效果 我想的是先通过rouer.option.route获取route,然后再拿到这个所属公司这个route,其次再获取接口拿到接口数据,通过addroute添加进去路由里面,然后我试了下这个方案不太行,而且会重复添加,我也不能设置一个变量去防止他重复添加

  • 访问路由空白无效果无报错;dev开发模式没问题,只存在build后通过服务打开页面存在问题。 通过调试问题出在beforeEach代码: 以上代码改成下面就可以访问了: 路由使用 createWebHashHistory 方式 开发模式没问题,应该排除代码问题吧?

  • 为什么用 > 或 < 判断就要报错啊