From a28672cfdddea0f4375c004621296bef045fc651 Mon Sep 17 00:00:00 2001 From: Kevin Beier Date: Fri, 22 May 2026 11:42:15 +0200 Subject: [PATCH] docs(website-new): split Vite MF config into dedicated file Align Vite integration docs with the Rspack pattern by moving federation options into module-federation.config.ts with createModuleFederationConfig. Co-authored-by: Cursor --- .../docs/en/integrations/build-tool/vite.mdx | 51 ++++--------------- .../docs/zh/integrations/build-tool/vite.mdx | 51 ++++--------------- .../components/common/vite/create-config.mdx | 27 ++++++++++ .../common/vite/register-plugin.mdx | 18 +++++++ 4 files changed, 67 insertions(+), 80 deletions(-) create mode 100644 apps/website-new/src/components/common/vite/create-config.mdx create mode 100644 apps/website-new/src/components/common/vite/register-plugin.mdx diff --git a/apps/website-new/docs/en/integrations/build-tool/vite.mdx b/apps/website-new/docs/en/integrations/build-tool/vite.mdx index 388fc8551ed..5b63cff23ab 100644 --- a/apps/website-new/docs/en/integrations/build-tool/vite.mdx +++ b/apps/website-new/docs/en/integrations/build-tool/vite.mdx @@ -29,50 +29,21 @@ import { PackageManagerTabs } from '@theme'; }} /> +### Create module-federation.config.ts + +Create the `module-federation.config.ts` file with the following content: + +import CreateConfig from '@components/common/vite/create-config'; + + + ### Register the Plugin In `Vite`, you can add the plugin through the `plugins` configuration item in the `vite.config.js` file: -```ts title='vite.config.js' -import { federation } from '@module-federation/vite'; -module.exports = { - server: { - origin: 'http://localhost:2000', - port: 2000, - }, - base: "http://localhost:2000", - plugins: [ - federation({ - name: 'vite_provider', - manifest: true, - remotes: { - esm_remote: { - type: "module", - name: "esm_remote", - entry: "https://[...]/remoteEntry.js", - }, - var_remote: "var_remote@https://[...]/remoteEntry.js", - }, - exposes: { - './button': './src/components/button', - }, - shared: { - react: { - singleton: true, - }, - 'react/': { - singleton: true, - }, - }, - }), - ], - // Do you need to support build targets lower than chrome89? - // You can use 'vite-plugin-top-level-await' plugin for that. - build: { - target: 'chrome89', - }, -}; -``` +import RegisterPlugin from '@components/common/vite/register-plugin'; + + ## Configure the Build Plugin diff --git a/apps/website-new/docs/zh/integrations/build-tool/vite.mdx b/apps/website-new/docs/zh/integrations/build-tool/vite.mdx index 13088eba0fc..6530134ffbf 100644 --- a/apps/website-new/docs/zh/integrations/build-tool/vite.mdx +++ b/apps/website-new/docs/zh/integrations/build-tool/vite.mdx @@ -29,50 +29,21 @@ import { PackageManagerTabs } from '@theme'; }} /> +### 创建 module-federation.config.ts + +创建 `module-federation.config.ts` 文件,内容如下: + +import CreateConfig from '@components/common/vite/create-config'; + + + ### 注册插件 在 `vite` 中,你可以通过 `vite.config.js` 配置文件中的 `plugins` 配置项来添加插件: -```ts title='vite.config.js' -import { federation } from '@module-federation/vite'; -module.exports = { - server: { - origin: 'http://localhost:2000', - port: 2000, - }, - remotes: { - esm_remote: { - type: "module", - name: "esm_remote", - entry: "https://[...]/remoteEntry.js", - }, - var_remote: "var_remote@https://[...]/remoteEntry.js", - }, - base: "http://localhost:2000", - plugins: [ - federation({ - name: 'vite_provider', - manifest: true, - exposes: { - './button': './src/components/button', - }, - shared: { - react: { - singleton: true, - }, - 'react/': { - singleton: true, - }, - }, - }), - ], - // Do you need to support build targets lower than chrome89? - // You can use 'vite-plugin-top-level-await' plugin for that. - build: { - target: 'chrome89', - }, -}; -``` +import RegisterPlugin from '@components/common/vite/register-plugin'; + + ## 配置构建插件 diff --git a/apps/website-new/src/components/common/vite/create-config.mdx b/apps/website-new/src/components/common/vite/create-config.mdx new file mode 100644 index 00000000000..563eebc0cb0 --- /dev/null +++ b/apps/website-new/src/components/common/vite/create-config.mdx @@ -0,0 +1,27 @@ +```ts title='module-federation.config.ts' +import { createModuleFederationConfig } from '@module-federation/vite'; + +export default createModuleFederationConfig({ + name: 'vite_provider', + manifest: true, + remotes: { + esm_remote: { + type: 'module', + name: 'esm_remote', + entry: 'https://[...]/remoteEntry.js', + }, + var_remote: 'var_remote@https://[...]/remoteEntry.js', + }, + exposes: { + './button': './src/components/button', + }, + shared: { + react: { + singleton: true, + }, + 'react/': { + singleton: true, + }, + }, +}); +``` diff --git a/apps/website-new/src/components/common/vite/register-plugin.mdx b/apps/website-new/src/components/common/vite/register-plugin.mdx new file mode 100644 index 00000000000..0bdf7555991 --- /dev/null +++ b/apps/website-new/src/components/common/vite/register-plugin.mdx @@ -0,0 +1,18 @@ +```ts title='vite.config.js' +import { federation } from '@module-federation/vite'; +import mfConfig from './module-federation.config'; + +module.exports = { + server: { + origin: 'http://localhost:2000', + port: 2000, + }, + base: 'http://localhost:2000', + plugins: [federation(mfConfig)], + // Do you need to support build targets lower than chrome89? + // You can use 'vite-plugin-top-level-await' plugin for that. + build: { + target: 'chrome89', + }, +}; +```