SvelteKit:CSS 中引用的静态资源的开发/构建和路径问题

2024-01-26

在 Svelte 文件的 CSS 部分中,假设我使用背景图像:

div { background-image: url(img/bg.jpg); }

图像文件位于static文件夹(static/img/bg.jpg)。这个简单的示例在开发模式下完美运行。

如果我尝试构建项目(使用适配器自动),我会收到警告:

(...) 中引用的 img/bg.jpg 在构建时未解析...

如果我运行该应用程序,它无法找到图像(位于/_app/immutable/assets/img/bg.jpg).

这个答案:https://stackoverflow.com/a/75716822/494979 https://stackoverflow.com/a/75716822/494979建议在中定义一个别名vite.config.ts file:

export default defineConfig({
resolve: {
    alias: {
      $img: "/static/img",
    },
  },
});

并将 CSS 更改为:

div { background-image: url($img/bg.jpg); }`

构建的项目现在可以正确加载图像(来自/_app/immutable/assets).

但现在它在开发模式下不起作用(尝试从/static/img/bg.jpg代替/img/bg.jpg).

对于从 CSS 加载的其他资源,如字体(带有@import).

SvelteKit 文档 (https://kit.svelte.dev/docs/assets https://kit.svelte.dev/docs/assets)说:“对于通过 CSS url() 函数包含的资源,您可能会发现 vitePreprocess 很有用。”,但我不知道如何。

我怎样才能拥有一个既适用于开发又适用于构建的配置,正如预期的那样?


这是我解决问题的方法,通过编辑vite.config.ts file.

配置对象需要作为函数传递{ mode }作为参数,这样我们就可以检查我们所处的模式(开发/生产)并相应地设置别名值。

import { sveltekit } from "@sveltejs/kit/vite";
import { defineConfig } from "vite";

export default defineConfig(({ mode }) => ({
  plugins: [sveltekit()],
  resolve: {
    alias: {
      $img: mode === "production" ? "./static/img" : "../img",
    },
  },
}));

// Config was initially this (worked with build, but not dev):
// export default defineConfig({
//   plugins: [sveltekit()],
//   resolve: {
//     alias: {
//       $img: "./static/img",
//     },
//   },
// });

(我想出了这条路../img经过几次尝试后进入开发模式,但这并不直观)。

这仍然感觉有点像一种解决方法。无论如何,我想知道为什么 SvelteKit 默认情况下不能正确解决这个问题(在我看来,这里应该不需要别名)。也许有更好的解决方案?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SvelteKit:CSS 中引用的静态资源的开发/构建和路径问题 的相关文章

  • Sveltekit:使用 $page.path 设置活动链接的样式

    我正在开发一个 sveltekit 应用程序 其侧导航包含链接 我无法使链接上的活动类样式正常工作 链接是以下组件NavLink svelte a class link href gt a
  • 如何通过svelte访问本地json文件?

    现在我使用 onMount 异步函数来访问 const dataAPI jsfwperf json let data onMount async gt const res await fetch dataAPI then res gt re
  • 即使禁用 SSR,评估 SSR 模块也会出错 - svelte-kit

    我希望我的应用程序中的路线之一不要在服务器端渲染 这样做的方法是export const ssr false在模块脚本或设置中ssr false in svelte config js如中提到的精简文档 https kit svelte d
  • svelte 包应该是依赖项还是 devDependency?

    我知道已经有很多帖子讨论了两者之间的区别dependency and devDependency但我没有找到任何解释 svelte 情况的信息 所以让我们在这里打开这个 在大多数 svelte 包中 比如svelte 材质 ui https
  • 使用 React Router v6.6.1 和 Vite 在 Github Pages 上出现错误 404

    我正在尝试使用 Vite React Router Dom v6 6 1 和 Github Pages 发布我的第一个 React 应用程序 但由于某种原因index html未检测到文件并显示 404 错误 但是此错误显示在我添加的页面上
  • 如何在 Svelte/Sapper 应用程序中包含 JQuery?

    有许多组件仍然需要我需要使用的 JQuery 不幸的是 在 Svelte Sapper 中执行此操作的最佳方法是什么 我应该使用 ES6 导入 修改汇总 还是最好的方法是什么 例如 我需要包含来自 DevExpress 或 Kendo UI
  • vue vite动态组件导入

    我正在将现有的 laravel ineria 从 mix 迁移到 vit 我完成了迁移指南中的所有步骤 除了一件事之外 一切正常 我有一个组件接收一个包含组件数组的道具 我曾经这样要求它们 在循环内 this options compone
  • 如何在Svelte中动态渲染组件?

    我试图循环遍历一个数组来渲染具有以下值的组件type each contents as content lt content type gt each 期望的输出
  • _layout.svelte 内的插槽属性未传递属性

    我正在开发一个 Sapper 项目 我想在加载到插槽中之前将一些异步数据加载到布局中 我发现在 layout svelte 文件中 我无法将道具传递到插槽 layout svelte
  • 选项 importNotUsedAsValues 已弃用

    有人可以帮我解决这个问题吗jsonfig json为一个精简的项目文件 它说的是importsNotUsedAsValues选项应替换为verbatimModuleSyntax compilerOptions moduleResolutio
  • SvelteKit:如何通过别名(如 $routes)从组件和端点引用 /routes 文件夹?

    接下来是我的 简化的 项目结构 appname src lib routes jsconfig json 在 jsconfig js 文件中 我有一个路径键 其别名为 lib 形式的 src lib 文件夹 compilerOptions
  • 如何在 Svelte 中将 css 从 node_modules 添加到 template.html

    我有一个 sapperjs 应用程序 就像您通过调用获得的应用程序一样npx degit sveltejs sapper template my app 我想添加一种字体 普通人可能会添加这样一行app template html 网络原因
  • 设置 customElement: true 时,Svelte 绑定不起作用

    我想使用 Svelte 构建自定义元素 Thus in rollup config js I set customElement true 然后我必须使用 来引用我的子组件 但我发现 通过这种方式 bind不管用 这是代码示例 HelloW
  • 如何在 sveltekit 应用程序中将菜单项设置为活动状态

    我一直在开发 sveltekit 应用程序 最近我的主导航菜单遇到了问题 当加载或刷新应用程序时 与当前 URL 对应的当前菜单项不会设置为活动状态 即菜单项 Home 的 URL 为 我很难在网上找到任何有用的东西来演示如何设置它 但我有
  • Vite Vue 3 库构建并不隐式包含 dist/style.css

    我构建了一个库项目 Vue 3 Vite 我想通过以下方式将其包含在主机项目中package json 但我遇到了一个问题 我可以导入组件并使用这些导入的组件运行一个简单的程序 但它们的样式消失了 请让我知道我的配置有什么问题 当我必须手动
  • 在 docker 容器内运行 vite 开发服务器

    我有一个 Vue cli 应用程序 我正在尝试将其转换为 vite 我正在使用 Docker 来运行服务器 我看了几个教程 并让 vite 在开发模式下运行 没有错误 但是 浏览器无法访问该端口 也就是说 当我在 macbook 的命令行上
  • Svelte:如何等待组件渲染

    我正在制作一个基于套接字连接的简单应用程序 基本上 一个用户决定其他用户可以看到什么 功能之一是为其他用户启动计时器 因此 有一个带有timerState变量和startTimer函数的Timer组件 当用户连接到套接字时 计时器组件与整个
  • 如何将typescript添加到Vue 3和Vite项目中

    我的设置 我通过以下方式安装了 Vue 和 Vite创建 vite 应用程序模块 然后将 init vite app 生成的所有包更新为 Vue 和 Vite 的最新 RC 版本 现在我想对我的所有代码使用打字稿 首先我只是玩了一下 然后添
  • 如何在 svelte 中制作搜索过滤器

    我有两个组件在组件树中距离很远 我对如何在两者之间进行通信存有疑问 我有搜索组件 listItems 和商店 商店 svelte
  • 如何将自己的js文件导入到vite中?

    我将 Laravel 与 Vite 结合使用 我想使用 Vanilla JS 代码添加文件 在我使用mix之前 我从来没有使用过Vite 我尝试将此代码添加到文件 vite config js 中 如下例所示 laravel input r

随机推荐

  • 显示带有 html 内容的 smarty 变量

    我有一个 smarty 变量 其中包含 html 内容 如下所示 html strong Content strong br etc etc 我尝试以 html 格式显示它 当显示它像 html 仅显示纯文本 不带格式 我尝试像 html
  • 获取线程CPU使用率

    我有一组消耗 CPU 的执行 每个执行都在低优先级的线程中运行 这些线程将在一个进程 如 IIS 中运行 该进程有许多其他线程 我不想减慢它们的速度 我想计算所有其他线程的 cpu 使用率 如果它大于 50 那么我会暂停其中一个线程 如果它
  • 绘图大小 - 在 IPython Notebook 中使用 ggplot2(通过 rmagic)

    我已经开始将 R 的使用集成到 Notebook 中 从我的角度来看 这是为了两全其美 Python 中的数据管理 同时利用 R 的相对分析 图形优势 不幸的是 我沉迷于一个看似简单的元素 调整 ggplot2 图形的绘图大小 使用 pan
  • 对于不带任何参数的方法来说,显式生命周期有什么意义?

    第 295 页Rust 编程 http shop oreilly com product 0636920040385 do您可以找到以下内容 幸运的是 标准库包含了总体实现 impl lt a T U gt AsRef u for a T
  • 如何打乱键值对?

    我有一组值需要在需要时进行洗牌 我不知道哪种变量类型最适合我 数据实际上是基于key value结构的 比如 100 white 200 black 300 red 就这样 我想做的是根据我还不知道的某种算法来更改键值对 但是它们需要像这样
  • 正则表达式,将多个斜杠替换为一个

    这似乎是一个很容易解决的问题 但它并不像看起来那么容易 我在 PHP 中有这个字符串 postname 这是一个 URL 我不想连续出现多个斜杠 我从来不想完全删除斜线 它应该是这样的 postname 因为结构可能看起来不同 所以我认为我
  • Django ORM 在 Postgres DB 上留下空闲连接

    最近 我的 Django 应用程序由于数据库连接错误而频繁崩溃 OperationalError FATAL sorry too many clients already 当我进入应用程序数据库时 我看到确实有近 100 个打开的连接 所有
  • Powershell 在第一个特殊字符出现后删除文本

    这是我必须解析的值 8 2 4 151 65 HBAAPI I v1 3 3 29 02 我需要删除第一个实例之后的所有内容 包括第一个实例 所以我需要我的最终结果是8 2 4 151 65 s 8 2 4 151 65 HBAAPI I
  • 事件源 -> 服务器批量返回事件流而不是块返回

    我有一个 php 脚本 可以通过验证从 csv 文件导入大数据 为此 我需要向用户展示进度 我为此使用了事件流 当我回显某些内容时 我希望将其一一传输到客户端 而不是服务器批量发送整个输出 我已经尝试过 ob start ob implic
  • 底部图例,两行包裹在 r 中的 ggplot2 中

    library ggplot2 library scales library reshape2 Rdates lt c 2007 01 31 2007 02 28 2007 03 30 2007 04 30 2007 05 31 2007
  • 在 C# 中显示/隐藏主窗体

    我正在开发一个程序 单击 form1 上的按钮将打开 form2 然后我将隐藏 form1 直到 form2 关闭 我遇到的问题是 form2 关闭后无法显示 form1 有想法该怎么解决这个吗 try Form1 ActiveForm H
  • 如何解决 SQLite 数据库的错误路径?

    Overview 我添加了一些代码来将现有数据库复制到设备的本地文件夹 到目前为止第一个条件如果现有数据库尚不存在工作正常 Issue 但是 当执行将现有数据库从解决方案文件夹复制到设备文件夹的代码行时 我收到 SQLite 错误 该错误告
  • 如何使用 ASP Classic 获取当前虚拟目录的名称?

    如何使用 ASP Classic 获取当前虚拟目录的名称 在 ASP NET 中你可以使用Request ApplicationPath找到这个 例如 假设您有一个如下 URL http localhost virtual director
  • Google Tv 模拟器 AVD 系统映像

    您好 我正在尝试在我的 Windows 机器中设置 google tv 模拟器 我能够安装 api level 13 中提供的 google tv add on 但是当我尝试创建 AVD 时 它会抛出错误消息 请安装 intel x86 但
  • PostgreSQL 中表达式索引的实际限制

    我需要使用 HSTORE 类型和键索引来存储数据 CREATE INDEX ix product size ON product data gt Size INT CREATE INDEX ix product color ON produ
  • Python套接字不发送不接收

    我从 python 文档中复制了 echo 服务器示例 它工作正常 但是当我编辑代码时 它不会将数据发送回客户端 第二次调用 socket recv 方法时不会返回 import socket HOST PORT 50007 s socke
  • 如何建模“特色”的概念(即当一位艺术家在歌曲中“特色”时)

    有时 一首歌会有不止一位艺术家参与 例如 Jay z 的新歌 A Star is Born 以艺术家 Cole 为主角 因此在目录中将被列为 Jay z featuring Cole A Star is Born 我的问题是如何在我的数据库
  • cron 是用 php 编写基于提醒的应用程序的最佳方式吗?

    假设我有一个这样的数据库 task time Remind me to water plants 2018 02 18T19 32 10 486Z English Test 2018 10 8T09 30 00 000Z Math Test
  • 如何为网站启用 Chromecast?

    This article https support google com chromecast answer 3265953 hl en CA解释了 支持 Chromecast 的网站 的好处 更高的质量 支持 Chromecast 的网
  • SvelteKit:CSS 中引用的静态资源的开发/构建和路径问题

    在 Svelte 文件的 CSS 部分中 假设我使用背景图像 div background image url img bg jpg 图像文件位于static文件夹 static img bg jpg 这个简单的示例在开发模式下完美运行 如