本章节介绍如何将 Vite 项目迁移到 Rsbuild。
首先你需要把 Vite 相关的 npm 依赖替换为 Rsbuild 的依赖。
下一步,你需要把 package.json 中的 npm scripts 更新为 Rsbuild 的 CLI 命令。
在 package.json 的同级目录下创建 Rsbuild 的配置文件 rsbuild.config.ts,并添加以下内容:
Rsbuild 与 Vite 默认的构建入口不同,Vite 使用 index.html 作为默认入口,而 Rsbuild 使用 src/index.js。
从 Vite 迁移到 Rsbuild 时,你可以使用 Rsbuild 提供的 source.entry 来设置构建入口,html.template 来设置模板。
以一个新建的 Vite 项目为例,首先删除 index.html 中的 <script> 标签:
然后添加如下配置即可。
Rsbuild 会在构建时自动注入 <script> 标签到生成的 HTML 文件中。
大部分常见的 Vite 插件可以轻松地迁移到 Rsbuild 插件,比如:
你可以参考 插件列表 来了解更多可用的插件。
以下是 Vite 配置对应的 Rsbuild 配置:
| Vite | Rsbuild |
|---|---|
| root | root |
| mode | mode |
| base | server.base |
| define | source.define |
| appType | server.historyApiFallback |
| plugins | plugins |
| envDir | Env Directory |
| logLevel | logLevel |
| cacheDir | buildCache |
| publicDir | server.publicDir |
| assetsInclude | source.assetsInclude |
| resolve.alias | resolve.alias |
| resolve.dedupe | resolve.dedupe |
| resolve.extensions | resolve.extensions |
| resolve.conditions | resolve.conditionNames |
| resolve.mainFields | resolve.mainFields |
| resolve.preserveSymlinks | tools.rspack.resolve.symlinks |
| html.cspNonce | security.nonce |
| css.modules | output.cssModules |
| css.postcss | tools.postcss |
| css.preprocessorOptions.sass | pluginSass |
| css.preprocessorOptions.less | pluginLess |
| css.preprocessorOptions.stylus | pluginStylus |
| css.devSourcemap | output.sourceMap |
| css.lightningcss | tools.lightningcssLoader |
| server.host, preview.host | server.host |
| server.port, preview.port | server.port |
| server.cors, preview.cors | server.cors |
| server.strictPort, preview.strictPort | server.strictPort |
| server.https, preview.https | server.https |
| server.open, preview.open | server.open |
| server.proxy, preview.proxy | server.proxy |
| server.headers, preview.headers | server.headers |
| server.hmr | dev.hmr, dev.client |
| server.middlewareMode | server.middlewareMode |
| build.target, build.cssTarget | Browserslist |
| build.outDir, build.assetsDir | output.distPath |
| build.assetsInlineLimit | output.dataUriLimit |
| build.cssMinify | output.minify |
| build.sourcemap | output.sourceMap |
| build.lib | Use Rslib |
| build.manifest | output.manifest |
| build.ssrEmitAssets | output.emitAssets |
| build.minify, build.terserOptions | output.minify |
| build.emptyOutDir | output.cleanDistPath |
| build.copyPublicDir | server.publicDir |
| build.reportCompressedSize | performance.printFileSize |
| ssr, worker | environments |
说明:
Vite 默认会将 VITE_ 开头的环境变量注入到 client 代码中,而 Rsbuild 默认会注入 PUBLIC_ 开头的环境变量(参考 public 变量)。
为了兼容 Vite 的行为,你可以手动调用 Rsbuild 提供的 loadEnv 方法来读取 VITE_ 开头的环境变量,并通过 source.define 配置项注入到 client 代码中。
Rsbuild 默认注入了以下 环境变量:
import.meta.env.MODEimport.meta.env.BASE_URLimport.meta.env.PRODimport.meta.env.DEV对于 import.meta.env.SSR,你可以通过 environments 和 source.define 配置项来设置:
Vite 通过 vite-env.d.ts 文件提供了一些预设的类型定义,迁移到 Rsbuild 时,你可以使用 @rsbuild/core 提供的 预设类型:
Vite 提供了 import.meta.glob() 来批量导入模块。
迁移到 Rsbuild 时,你可以使用 Rspack 的 import.meta.webpackContext 函数代替:
Rsbuild 开箱即用地支持 TypeScript 的 paths 选项作为 alias 别名,因此你可以直接移除 vite-tsconfig-paths 依赖。
参考 路径别名 来了解更多。
参考 Vite 插件 了解如何迁移 Vite 插件。
完成以上步骤后,你已经完成了从 Vite 到 Rsbuild 的基本迁移,此时可以执行 npm run dev 命令来尝试启动开发服务器。
如果在构建过程中发现问题,请根据错误日志进行调试,或者查看 Vite 配置,检查是否有一些必须的配置未被迁移到 Rsbuild。
当前文档只涵盖了迁移过程的部分事项,如果你发现有合适的内容可以补充,欢迎通过 pull request 来完善文档 🤝。
Rsbuild 的文档位于 rsbuild/website 目录。