Svelte 插件

Svelte 插件提供了对 Svelte 组件(.svelte 文件)的支持,插件内部集成了 svelte-loader

快速开始

安装插件

你可以通过如下的命令安装插件:

npm
yarn
pnpm
bun
npm add @rsbuild/plugin-svelte -D

注册插件

你可以在 rsbuild.config.ts 文件中注册插件:

rsbuild.config.ts
import { pluginSvelte } from '@rsbuild/plugin-svelte';  export default {  plugins: [pluginSvelte()], };

注册插件后,你可以在代码中引入 *.svelte 单文件组件。

选项

如果你需要自定义 Svelte 的编译行为,可以使用以下配置项。

svelteLoaderOptions

传递给 svelte-loader 的选项,请查阅 svelte-loader 文档 来了解具体用法。

  • 类型: SvelteLoaderOptions
  • 默认值:
const defaultOptions = {  compilerOptions: {  dev: isDev,  },  preprocess: require('svelte-preprocess')(),  emitCss: isProd && !rsbuildConfig.output.injectStyles,  hotReload: isDev && rsbuildConfig.dev.hmr, };
  • 示例:
pluginSvelte({  svelteLoaderOptions: {  preprocess: null,  }, });

preprocessOptions

传递给 svelte-preprocess 的选项,请查阅 svelte-preprocess 文档 来了解具体用法。

  • 类型: AutoPreprocessOptions
  • 默认值: undefined
interface AutoPreprocessOptions {  globalStyle: { ... },  replace: { ... },  typescript: { ... },  scss: { ... },  sass: { ... },  less: { ... },  stylus: { ... },  babel: { ... },  postcss: { ... },  coffeescript: { ... },  pug: { ... }, }
  • 示例:
pluginSvelte({  preprocessOptions: {  aliases: [  ['potato', 'potatoLanguage'],  ['pot', 'potatoLanguage'],  ],  /** Add a custom language preprocessor */  potatoLanguage({ content, filename, attributes }) {  const { code, map } = require('potato-language').render(content);  return { code, map };  },  }, });

注意事项

目前 svelte-loader 暂不支持 Svelte v5 热更新,详见 svelte-loader - Hot Reload