Vite 是一个优秀和强大的构建工具,在某些情况下,你可能需要将一个 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 |
plugins | plugins |
envDir | Env Directory |
publicDir | server.publicDir |
assetsInclude | source.assetsInclude |
resolve.alias | source.alias |
resolve.conditions | tools.rspack.resolve.conditionNames |
resolve.mainFields | tools.rspack.resolve.mainFields |
resolve.extensions | tools.rspack.resolve.extensions |
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.strictPort, preview.strictPort | server.strictPort |
server.https, preview.https | server.https |
server.open, preview.open | server.open |
server.proxy, preview.cors | server.proxy |
server.headers, preview.headers | server.headers |
server.hmr | dev.hmr, dev.client |
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.MODE
import.meta.env.BASE_URL
import.meta.env.PROD
import.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 函数代替:
完成以上步骤后,你已经完成了从 Vite 到 Rsbuild 的基本迁移,此时可以执行 npm run dev
命令来尝试启动开发服务器。
如果在构建过程中发现问题,请根据错误日志进行调试,或者查看 Vite 配置,检查是否有一些必须的配置未被迁移到 Rsbuild。
当前文档只涵盖了迁移过程的部分事项,如果你发现有合适的内容可以补充,欢迎通过 pull request 来完善文档 🤝。
Rsbuild 的文档位于 rsbuild/website 目录。