From 5af6ae024c939cc8fe895d82632c1825cac1c81f Mon Sep 17 00:00:00 2001
From: 2heal1 <TwoHeal@163.com>
Date: Mon, 20 Jan 2025 20:23:09 +0800
Subject: [PATCH 1/2] feat: add Create a new Module Federation project cli

---
 .changeset/beige-otters-tease.md              |   5 +
 .eslintignore                                 |   2 +-
 .prettierignore                               |   2 +
 apps/rslib-module/rslib.config.ts             |   6 +-
 .../create-module-federation/CHANGELOG.md     |   1 +
 packages/create-module-federation/LICENSE     |  21 +
 packages/create-module-federation/README.md   |   1 +
 .../create-module-federation/jest.config.js   |  27 +
 .../create-module-federation/package.json     |  44 ++
 .../create-module-federation/project.json     |  65 ++
 .../create-module-federation/rslib.config.ts  |   7 +
 .../create-module-federation/src/create.ts    | 400 +++++++++++
 .../src/handlebars/index.ts                   |  66 ++
 .../src/handlebars/utils.ts                   |  21 +
 .../create-module-federation/src/index.ts     |  20 +
 .../src/materials/FsMaterial.ts               |  48 ++
 .../src/materials/FsResource.ts               |  29 +
 .../src/materials/constants.ts                |  12 +
 .../src/materials/index.ts                    |   2 +
 .../module-federation.config.ts.handlebars    |  12 +
 .../consumer-modern-ts/src/routes/page.tsx    |  34 +
 .../templates/consumer-rsbuild-ts/src/App.tsx |  25 +
 .../templates/lib-common/.gitignore           |  13 +
 .../module-federation.config.ts.handlebars    |  17 +
 .../templates/lib-common/rslib.config.ts      |  46 ++
 .../templates/lib-common/src/Description.tsx  |   7 +
 .../templates/lib-common/src/Footer.css       |  46 ++
 .../templates/lib-common/src/Footer.tsx       |  74 ++
 .../templates/lib-common/src/Header.tsx       |   9 +
 .../templates/lib-common/src/index.tsx        |   3 +
 .../templates/lib-common/tsconfig.json        |  14 +
 .../templates/modern-common/.browserslistrc   |   5 +
 .../templates/modern-common/.gitignore        |  30 +
 .../templates/modern-common/.npmrc            |   1 +
 .../templates/modern-common/.nvmrc            |   1 +
 .../modern-common/.vscode/extensions.json     |  14 +
 .../modern-common/.vscode/settings.json       |  88 +++
 .../templates/modern-common/README.md         |  37 +
 .../templates/modern-common/biome.json        |  34 +
 .../templates/modern-common/modern.config.ts  |  15 +
 .../templates/modern-common/package.json      |  45 ++
 .../modern-common/package.json.handlebars     |  45 ++
 .../src/components/ComponentInspector.css     |  86 +++
 .../src/components/ComponentInspector.tsx     |  68 ++
 .../modern-common/src/modern-app-env.d.ts     |   3 +
 .../modern-common/src/modern.runtime.ts       |   3 +
 .../modern-common/src/routes/index.css        |  41 ++
 .../modern-common/src/routes/layout.tsx       |   9 +
 .../templates/modern-common/tsconfig.json     |  14 +
 .../module-federation.config.ts.handlebars    |  14 +
 .../src/components/Description.css            |  23 +
 .../src/components/Description.tsx            |  11 +
 .../src/components/Footer.css                 |  45 ++
 .../src/components/Footer.tsx                 |  74 ++
 .../src/components/Header.css                 |  11 +
 .../src/components/Header.tsx                 |  17 +
 .../provider-modern-ts/src/routes/page.tsx    |  34 +
 .../module-federation.config.ts.handlebars    |  14 +
 .../templates/provider-rsbuild-ts/src/App.tsx |  25 +
 .../src/components/Description.tsx            |   7 +
 .../src/components/Footer.css                 |  46 ++
 .../src/components/Footer.tsx                 |  74 ++
 .../src/components/Header.tsx                 |   9 +
 .../.storybook/main.ts                        |  41 ++
 .../provider-rslib-storybook-ts/README.md     |  27 +
 .../package.json.handlebars                   |  34 +
 .../stories/Description.stories.tsx           |  11 +
 .../stories/Footer.stories.tsx                |  11 +
 .../stories/Header.stories.tsx                |  11 +
 .../templates/provider-rslib-ts/README.md     |  19 +
 .../provider-rslib-ts/package.json.handlebars |  48 ++
 .../templates/rsbuild-common/.gitignore       |  13 +
 .../templates/rsbuild-common/README.md        |  29 +
 .../rsbuild-common/package.json.handlebars    |  22 +
 .../templates/rsbuild-common/public/.gitkeep  |   0
 .../rsbuild-common/rsbuild.config.ts          |   8 +
 .../templates/rsbuild-common/src/App.css      |  15 +
 .../rsbuild-common/src/bootstrap.tsx          |  13 +
 .../src/components/ComponentInspector.css     |  86 +++
 .../src/components/ComponentInspector.tsx     |  68 ++
 .../templates/rsbuild-common/src/env.d.ts     |   1 +
 .../templates/rsbuild-common/src/index.tsx    |   1 +
 .../templates/rsbuild-common/tsconfig.json    |  26 +
 .../create-module-federation/tsconfig.json    |  30 +
 .../tsconfig.lib.json                         |  10 +
 .../tsconfig.spec.json                        |  14 +
 packages/data-prefetch/tsconfig.json          |   1 -
 packages/rsbuild-plugin/src/cli/index.ts      |  21 +-
 .../tsconfig.json                             |   1 -
 pnpm-lock.yaml                                | 662 +++++++++++++-----
 90 files changed, 3053 insertions(+), 192 deletions(-)
 create mode 100644 .changeset/beige-otters-tease.md
 create mode 100644 packages/create-module-federation/CHANGELOG.md
 create mode 100644 packages/create-module-federation/LICENSE
 create mode 100644 packages/create-module-federation/README.md
 create mode 100644 packages/create-module-federation/jest.config.js
 create mode 100644 packages/create-module-federation/package.json
 create mode 100644 packages/create-module-federation/project.json
 create mode 100644 packages/create-module-federation/rslib.config.ts
 create mode 100644 packages/create-module-federation/src/create.ts
 create mode 100644 packages/create-module-federation/src/handlebars/index.ts
 create mode 100644 packages/create-module-federation/src/handlebars/utils.ts
 create mode 100644 packages/create-module-federation/src/index.ts
 create mode 100644 packages/create-module-federation/src/materials/FsMaterial.ts
 create mode 100644 packages/create-module-federation/src/materials/FsResource.ts
 create mode 100644 packages/create-module-federation/src/materials/constants.ts
 create mode 100644 packages/create-module-federation/src/materials/index.ts
 create mode 100644 packages/create-module-federation/templates/consumer-modern-ts/module-federation.config.ts.handlebars
 create mode 100644 packages/create-module-federation/templates/consumer-modern-ts/src/routes/page.tsx
 create mode 100644 packages/create-module-federation/templates/consumer-rsbuild-ts/src/App.tsx
 create mode 100644 packages/create-module-federation/templates/lib-common/.gitignore
 create mode 100644 packages/create-module-federation/templates/lib-common/module-federation.config.ts.handlebars
 create mode 100644 packages/create-module-federation/templates/lib-common/rslib.config.ts
 create mode 100644 packages/create-module-federation/templates/lib-common/src/Description.tsx
 create mode 100644 packages/create-module-federation/templates/lib-common/src/Footer.css
 create mode 100644 packages/create-module-federation/templates/lib-common/src/Footer.tsx
 create mode 100644 packages/create-module-federation/templates/lib-common/src/Header.tsx
 create mode 100644 packages/create-module-federation/templates/lib-common/src/index.tsx
 create mode 100644 packages/create-module-federation/templates/lib-common/tsconfig.json
 create mode 100644 packages/create-module-federation/templates/modern-common/.browserslistrc
 create mode 100644 packages/create-module-federation/templates/modern-common/.gitignore
 create mode 100644 packages/create-module-federation/templates/modern-common/.npmrc
 create mode 100644 packages/create-module-federation/templates/modern-common/.nvmrc
 create mode 100644 packages/create-module-federation/templates/modern-common/.vscode/extensions.json
 create mode 100644 packages/create-module-federation/templates/modern-common/.vscode/settings.json
 create mode 100644 packages/create-module-federation/templates/modern-common/README.md
 create mode 100644 packages/create-module-federation/templates/modern-common/biome.json
 create mode 100644 packages/create-module-federation/templates/modern-common/modern.config.ts
 create mode 100644 packages/create-module-federation/templates/modern-common/package.json
 create mode 100644 packages/create-module-federation/templates/modern-common/package.json.handlebars
 create mode 100644 packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.css
 create mode 100644 packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.tsx
 create mode 100644 packages/create-module-federation/templates/modern-common/src/modern-app-env.d.ts
 create mode 100644 packages/create-module-federation/templates/modern-common/src/modern.runtime.ts
 create mode 100644 packages/create-module-federation/templates/modern-common/src/routes/index.css
 create mode 100644 packages/create-module-federation/templates/modern-common/src/routes/layout.tsx
 create mode 100644 packages/create-module-federation/templates/modern-common/tsconfig.json
 create mode 100644 packages/create-module-federation/templates/provider-modern-ts/module-federation.config.ts.handlebars
 create mode 100644 packages/create-module-federation/templates/provider-modern-ts/src/components/Description.css
 create mode 100644 packages/create-module-federation/templates/provider-modern-ts/src/components/Description.tsx
 create mode 100644 packages/create-module-federation/templates/provider-modern-ts/src/components/Footer.css
 create mode 100644 packages/create-module-federation/templates/provider-modern-ts/src/components/Footer.tsx
 create mode 100644 packages/create-module-federation/templates/provider-modern-ts/src/components/Header.css
 create mode 100644 packages/create-module-federation/templates/provider-modern-ts/src/components/Header.tsx
 create mode 100644 packages/create-module-federation/templates/provider-modern-ts/src/routes/page.tsx
 create mode 100644 packages/create-module-federation/templates/provider-rsbuild-ts/module-federation.config.ts.handlebars
 create mode 100644 packages/create-module-federation/templates/provider-rsbuild-ts/src/App.tsx
 create mode 100644 packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Description.tsx
 create mode 100644 packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Footer.css
 create mode 100644 packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Footer.tsx
 create mode 100644 packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Header.tsx
 create mode 100644 packages/create-module-federation/templates/provider-rslib-storybook-ts/.storybook/main.ts
 create mode 100644 packages/create-module-federation/templates/provider-rslib-storybook-ts/README.md
 create mode 100644 packages/create-module-federation/templates/provider-rslib-storybook-ts/package.json.handlebars
 create mode 100644 packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Description.stories.tsx
 create mode 100644 packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Footer.stories.tsx
 create mode 100644 packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Header.stories.tsx
 create mode 100644 packages/create-module-federation/templates/provider-rslib-ts/README.md
 create mode 100644 packages/create-module-federation/templates/provider-rslib-ts/package.json.handlebars
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/.gitignore
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/README.md
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/package.json.handlebars
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/public/.gitkeep
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/rsbuild.config.ts
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/src/App.css
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/src/bootstrap.tsx
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.css
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.tsx
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/src/env.d.ts
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/src/index.tsx
 create mode 100644 packages/create-module-federation/templates/rsbuild-common/tsconfig.json
 create mode 100644 packages/create-module-federation/tsconfig.json
 create mode 100644 packages/create-module-federation/tsconfig.lib.json
 create mode 100644 packages/create-module-federation/tsconfig.spec.json

diff --git a/.changeset/beige-otters-tease.md b/.changeset/beige-otters-tease.md
new file mode 100644
index 00000000000..7391b167424
--- /dev/null
+++ b/.changeset/beige-otters-tease.md
@@ -0,0 +1,5 @@
+---
+'create-module-federation': patch
+---
+
+feat: add Create a new Module Federation project cli
diff --git a/.eslintignore b/.eslintignore
index 52908858183..91aba082d89 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,3 +1,3 @@
 node_modules/
 vite.config.ts
-**/dist/**
\ No newline at end of file
+**/dist/**
diff --git a/.prettierignore b/.prettierignore
index 53d01379255..149a6d43d01 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -11,3 +11,5 @@ apps/website-new/docs
 
 /.nx/workspace-data
 /.nx/cache
+
+**/*.handlebars
diff --git a/apps/rslib-module/rslib.config.ts b/apps/rslib-module/rslib.config.ts
index dd3763fa44b..5e22e8f0955 100644
--- a/apps/rslib-module/rslib.config.ts
+++ b/apps/rslib-module/rslib.config.ts
@@ -36,11 +36,11 @@ export default defineConfig({
           root: './dist/mf',
         },
       },
-      server: {
-        port: 3001,
-      },
     },
   ],
+  server: {
+    port: 3001,
+  },
   plugins: [
     pluginReact(),
     pluginModuleFederation({
diff --git a/packages/create-module-federation/CHANGELOG.md b/packages/create-module-federation/CHANGELOG.md
new file mode 100644
index 00000000000..992a0c9c99a
--- /dev/null
+++ b/packages/create-module-federation/CHANGELOG.md
@@ -0,0 +1 @@
+# create-module-federation
diff --git a/packages/create-module-federation/LICENSE b/packages/create-module-federation/LICENSE
new file mode 100644
index 00000000000..f428f6109cd
--- /dev/null
+++ b/packages/create-module-federation/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024-present hanric(2heal1)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/create-module-federation/README.md b/packages/create-module-federation/README.md
new file mode 100644
index 00000000000..b1d45d330a2
--- /dev/null
+++ b/packages/create-module-federation/README.md
@@ -0,0 +1 @@
+# `create-module-federation`
diff --git a/packages/create-module-federation/jest.config.js b/packages/create-module-federation/jest.config.js
new file mode 100644
index 00000000000..e99f20c50b7
--- /dev/null
+++ b/packages/create-module-federation/jest.config.js
@@ -0,0 +1,27 @@
+// For a detailed explanation regarding each configuration property, visit:
+// https://jestjs.io/docs/en/configuration.html
+
+module.exports = {
+  clearMocks: true,
+  testEnvironment: 'jsdom',
+  coveragePathIgnorePatterns: ['__tests__', '/node_modules/'],
+  coverageProvider: 'v8',
+  coverageReporters: ['cobertura', 'clover', 'json', 'lcov', 'text'],
+  globals: {
+    __DEV__: true,
+    __TEST__: true,
+    __BROWSER__: false,
+    __VERSION__: '"unknown"',
+  },
+  preset: 'ts-jest',
+  transformIgnorePatterns: [
+    // Change MODULE_NAME_HERE to your module that isn't being compiled
+    '/node_modules/(?!((@byted/garfish-)|(byted-tea-sdk))).+\\.js$',
+  ],
+  transform: {
+    '^.+\\.(t|j)sx?$': ['@swc/jest'],
+  },
+  rootDir: __dirname,
+  testMatch: ['<rootDir>__tests__/**/**.spec.[jt]s?(x)'],
+  testPathIgnorePatterns: ['/node_modules/'],
+};
diff --git a/packages/create-module-federation/package.json b/packages/create-module-federation/package.json
new file mode 100644
index 00000000000..298cf225f7d
--- /dev/null
+++ b/packages/create-module-federation/package.json
@@ -0,0 +1,44 @@
+{
+  "name": "create-module-federation",
+  "description": "Create a new Module Federation project",
+  "public": true,
+  "sideEffects": false,
+  "version": "0.0.0",
+  "license": "MIT",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/module-federation/core/",
+    "directory": "packages/create-module-federation"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "type": "module",
+  "scripts": {
+    "build": "rslib build"
+  },
+  "main": "./dist/index.js",
+  "bin": {
+    "create-module-federation": "./dist/index.js"
+  },
+  "files": [
+    "template",
+    "dist"
+  ],
+  "dependencies": {
+    "@clack/prompts": "^0.8.2",
+    "execa": "5.1.1",
+    "fs-extra": "9.1.0",
+    "minimist": "^1.2.8",
+    "rslog": "^1.2.3",
+    "glob": "7.2.0",
+    "handlebars": "4.7.7"
+  },
+  "devDependencies": {
+    "@types/glob": "7.2.0",
+    "@types/minimist": "^1.2.5",
+    "@types/fs-extra": "9.0.6",
+    "@rslib/core": "^0.3.1",
+    "rsbuild-plugin-publint": "^0.2.1"
+  }
+}
diff --git a/packages/create-module-federation/project.json b/packages/create-module-federation/project.json
new file mode 100644
index 00000000000..98bc4c8d17a
--- /dev/null
+++ b/packages/create-module-federation/project.json
@@ -0,0 +1,65 @@
+{
+  "name": "create-module-federation",
+  "$schema": "../../node_modules/nx/schemas/project-schema.json",
+  "sourceRoot": "packages/create-module-federation/src",
+  "projectType": "library",
+  "tags": ["type:pkg"],
+  "targets": {
+    "build": {
+      "executor": "nx:run-commands",
+      "options": {
+        "parallel": false,
+        "dependsOn": [
+          {
+            "target": "build",
+            "dependencies": true
+          }
+        ],
+        "commands": [
+          "cd packages/create-module-federation; pnpm run build",
+          "cp packages/create-module-federation/LICENSE packages/create-module-federation/dist"
+        ]
+      }
+    },
+    "lint": {
+      "executor": "@nx/eslint:lint",
+      "outputs": ["{options.outputFile}"],
+      "options": {
+        "lintFilePatterns": [
+          "packages/create-module-federation/**/*.ts",
+          "packages/create-module-federation/package.json"
+        ]
+      }
+    },
+    "test": {
+      "executor": "@nx/jest:jest",
+      "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
+      "options": {
+        "jestConfig": "packages/create-module-federation/jest.config.js",
+        "passWithNoTests": true
+      },
+      "configurations": {
+        "ci": {
+          "ci": true,
+          "codeCoverage": true
+        }
+      }
+    },
+    "pre-release": {
+      "executor": "nx:run-commands",
+      "options": {
+        "parallel": false,
+        "commands": [
+          {
+            "command": "nx run create-module-federation:test",
+            "forwardAllArgs": false
+          },
+          {
+            "command": "nx run create-module-federation:build",
+            "forwardAllArgs": false
+          }
+        ]
+      }
+    }
+  }
+}
diff --git a/packages/create-module-federation/rslib.config.ts b/packages/create-module-federation/rslib.config.ts
new file mode 100644
index 00000000000..bf77c216693
--- /dev/null
+++ b/packages/create-module-federation/rslib.config.ts
@@ -0,0 +1,7 @@
+import { pluginPublint } from 'rsbuild-plugin-publint';
+import { defineConfig } from '@rslib/core';
+
+export default defineConfig({
+  lib: [{ format: 'esm' }],
+  plugins: [pluginPublint()],
+});
diff --git a/packages/create-module-federation/src/create.ts b/packages/create-module-federation/src/create.ts
new file mode 100644
index 00000000000..2b798ccba0d
--- /dev/null
+++ b/packages/create-module-federation/src/create.ts
@@ -0,0 +1,400 @@
+/**
+ * forked from https://github.com/rspack-contrib/create-rstack
+ * license at https://github.com/rspack-contrib/create-rstack/blob/main/LICENSE
+ */
+import path from 'path';
+import fs from 'fs';
+import {
+  cancel,
+  isCancel,
+  multiselect,
+  note,
+  outro,
+  select,
+  text,
+} from '@clack/prompts';
+import minimist from 'minimist';
+import { logger } from 'rslog';
+import { FsMaterial } from './materials/FsMaterial';
+import { HandlebarsAPI } from './handlebars';
+
+type Argv = {
+  help?: boolean;
+  dir?: string;
+  template?: string;
+  override?: boolean;
+};
+
+type ProjectType = 'lib' | 'app';
+type RoleType = 'consumer' | 'provider';
+type AppTemplateName = 'modern' | 'rsbuild';
+type LibTemplateName = 'rslib';
+type ProviderInfo = {
+  name: string;
+  entry: string;
+};
+
+function upperFirst(str: string) {
+  return str.charAt(0).toUpperCase() + str.slice(1);
+}
+
+function logHelpMessage(name: string, templates: string[]) {
+  logger.log(`
+   Usage: create-${name} [options]
+
+   Options:
+
+     -h, --help       display help for command
+     -d, --dir        create project in specified directory
+     -t, --template   specify the template to use
+     --override       override files in target directory
+
+   Templates:
+
+     ${templates.join(', ')}
+`);
+}
+
+function pkgFromUserAgent(userAgent: string | undefined) {
+  if (!userAgent) return undefined;
+  const pkgSpec = userAgent.split(' ')[0];
+  const pkgSpecArr = pkgSpec.split('/');
+  return {
+    name: pkgSpecArr[0],
+    version: pkgSpecArr[1],
+  };
+}
+
+function cancelAndExit() {
+  cancel('Operation cancelled.');
+  process.exit(0);
+}
+
+function checkCancel<T>(value: unknown) {
+  if (isCancel(value)) {
+    cancelAndExit();
+  }
+  return value as T;
+}
+
+/**
+ * 1. Input: 'foo'
+ *    Output: folder `<cwd>/foo`, `package.json#name` -> `foo`
+ *
+ * 2. Input: 'foo/bar'
+ *    Output: folder -> `<cwd>/foo/bar` folder, `package.json#name` -> `bar`
+ *
+ * 3. Input: '@scope/foo'
+ *    Output: folder -> `<cwd>/@scope/bar` folder, `package.json#name` -> `@scope/foo`
+ *
+ * 4. Input: './foo/bar'
+ *    Output: folder -> `<cwd>/foo/bar` folder, `package.json#name` -> `bar`
+ *
+ * 5. Input: '/root/path/to/foo'
+ *    Output: folder -> `'/root/path/to/foo'` folder, `package.json#name` -> `foo`
+ */
+function formatDir(input: string) {
+  return {
+    targetDir: input.trim().replace(/\/+$/g, ''),
+  };
+}
+
+function isEmptyDir(path: string) {
+  const files = fs.readdirSync(path);
+  return files.length === 0 || (files.length === 1 && files[0] === '.git');
+}
+
+async function getAppTemplateName(
+  {
+    roleType,
+    framework,
+  }: {
+    roleType: RoleType;
+    framework: AppTemplateName;
+  },
+  { template }: Argv,
+) {
+  if (template) {
+    return `${template}-ts`;
+  }
+
+  let providerInfo: ProviderInfo = {
+    name: '',
+    entry: '',
+  };
+
+  if (roleType === 'consumer') {
+    const providerName = checkCancel<string>(
+      await text({
+        message:
+          'Please input your provider name (You can skip by press "enter"):',
+        defaultValue: '',
+      }),
+    );
+
+    if (providerName) {
+      providerInfo.name = providerName;
+
+      const providerEntry = checkCancel<string>(
+        await text({
+          message: `Please input your provider("${providerName}") entry:`,
+          validate(value) {
+            if (value.length === 0) {
+              return 'Entry is required';
+            }
+          },
+        }),
+      );
+      providerInfo.entry = providerEntry;
+    }
+  }
+
+  return `${roleType}-${framework}-ts`;
+}
+
+async function getLibTemplateName({ template }: Argv) {
+  if (template) {
+    return `${template}-ts`;
+  }
+
+  const templateName = checkCancel<LibTemplateName>(
+    await select({
+      message: 'Select template',
+      options: [{ value: 'rslib', label: 'Rslib' }],
+    }),
+  );
+
+  type ExcludesFalse = <T>(x: T | false) => x is T;
+  const tools = checkCancel<string[]>(
+    await multiselect({
+      message:
+        'Select development tools (Use <space> to select, <enter> to continue)',
+      required: false,
+      options: [
+        {
+          value: 'storybook',
+          label: 'Storybook',
+        },
+        // TODO: support Rspress Module doc in the future
+      ].filter(Boolean as any as ExcludesFalse),
+    }),
+  );
+
+  // not support consumer yet, only support consume by runtime api
+  const roleType: RoleType = 'provider';
+
+  if (!tools || !Object.keys(tools).length) {
+    return `${roleType}-${templateName}-ts`;
+  }
+
+  return `${roleType}-${templateName}-[${Object.keys(tools)}]-ts`;
+}
+
+function getTemplateName(
+  {
+    projectType,
+    roleType,
+    framework,
+  }: {
+    projectType: ProjectType;
+    roleType: RoleType;
+    framework: AppTemplateName;
+  },
+  args: Argv,
+) {
+  if (projectType === 'app') {
+    return getAppTemplateName(
+      {
+        roleType,
+        framework,
+      },
+      args,
+    );
+  }
+  return getLibTemplateName(args);
+}
+
+function getTemplateDir(templateName: string) {
+  return `templates/${templateName}/`;
+}
+
+async function forgeTemplate({
+  projectType,
+  argv,
+  templateParameters,
+  distFolder,
+}: {
+  projectType: ProjectType;
+  argv: Argv;
+  templateParameters: Record<string, string>;
+  distFolder: string;
+}) {
+  let framework: AppTemplateName = 'modern';
+  let roleType: RoleType = 'provider';
+
+  if (projectType === 'app') {
+    framework = checkCancel<AppTemplateName>(
+      await select({
+        message: 'Select template',
+        options: [
+          { value: 'modern', label: 'Modern.js Framework' },
+          { value: 'rsbuild', label: 'Rsbuild' },
+        ],
+      }),
+    );
+
+    roleType = checkCancel<RoleType>(
+      await select({
+        message: 'Please select the role of project you want to create:',
+        initialValue: 'provider',
+        options: [
+          { value: 'consumer', label: 'Consumer' },
+          { value: 'provider', label: 'Provider' },
+        ],
+      }),
+    );
+  }
+
+  const templateName = await getTemplateName(
+    {
+      projectType,
+      framework,
+      roleType,
+    },
+    argv,
+  );
+  const material = new FsMaterial(__dirname);
+
+  const renderTemplate = async (templateDir: string) => {
+    const templatePattern = `${templateDir}**/*`;
+    const resourceMap = await material.find(templatePattern, {
+      nodir: true,
+      dot: true,
+    });
+
+    const parameters = {
+      ...templateParameters,
+    };
+
+    await Promise.all(
+      Object.keys(resourceMap).map(async (resourceKey) => {
+        const target = resourceKey
+          .replace(templateDir, ``)
+          .replace('.handlebars', ``);
+
+        const handlebarsAPI = new HandlebarsAPI();
+        await handlebarsAPI.renderTemplate(
+          material.get(resourceKey),
+          target,
+          distFolder,
+          {
+            ...parameters,
+          },
+        );
+      }),
+    );
+  };
+
+  const templateDir = getTemplateDir(templateName);
+
+  let commonTemplateDir = '';
+  if (projectType === 'lib') {
+    commonTemplateDir = 'templates/lib-common/';
+  } else {
+    commonTemplateDir = `templates/${framework}-common/`;
+  }
+
+  await renderTemplate(commonTemplateDir);
+  await renderTemplate(templateDir);
+}
+
+export async function create({
+  name,
+  templates,
+}: {
+  name: string;
+  templates: string[];
+}) {
+  const argv = minimist<Argv>(process.argv.slice(2), {
+    alias: { h: 'help', d: 'dir', t: 'template' },
+  });
+
+  console.log('');
+  logger.greet(`◆  Create ${upperFirst(name)} Project`);
+
+  if (argv.help) {
+    logHelpMessage(name, templates);
+    return;
+  }
+
+  const cwd = process.cwd();
+  const pkgInfo = pkgFromUserAgent(process.env['npm_config_user_agent']);
+  const pkgManager = pkgInfo ? pkgInfo.name : 'npm';
+
+  const mfName =
+    argv.dir ??
+    checkCancel<string>(
+      await text({
+        message: 'Please input Module Federation name:',
+        placeholder: 'mf-project-name',
+        defaultValue: 'mf-project-name',
+        validate(value) {
+          if (value.length === 0) {
+            return 'Name is required';
+          }
+        },
+      }),
+    );
+
+  const dir = argv.dir || 'mf-project';
+
+  const { targetDir } = formatDir(dir);
+  const distFolder = path.isAbsolute(targetDir)
+    ? targetDir
+    : path.join(cwd, targetDir);
+
+  if (!argv.override && fs.existsSync(distFolder) && !isEmptyDir(distFolder)) {
+    const option = checkCancel<string>(
+      await select({
+        message: `"${targetDir}" is not empty, please choose:`,
+        options: [
+          { value: 'yes', label: 'Continue and override files' },
+          { value: 'no', label: 'Cancel operation' },
+        ],
+      }),
+    );
+
+    if (option === 'no') {
+      cancelAndExit();
+    }
+  }
+
+  const projectType = checkCancel<ProjectType>(
+    await select({
+      message: 'Please select the type of project you want to create:',
+      options: [
+        { value: 'app', label: 'Application' },
+        { value: 'lib', label: 'Lib' },
+      ],
+    }),
+  );
+
+  await forgeTemplate({
+    projectType,
+    argv,
+    templateParameters: {
+      mfName,
+    },
+    distFolder,
+  });
+
+  const nextSteps = [
+    `cd ${targetDir}`,
+    `${pkgManager} install`,
+    `${pkgManager} run dev`,
+  ];
+
+  note(nextSteps.join('\n'), 'Next steps');
+
+  outro('Done.');
+}
diff --git a/packages/create-module-federation/src/handlebars/index.ts b/packages/create-module-federation/src/handlebars/index.ts
new file mode 100644
index 00000000000..871d0f4892a
--- /dev/null
+++ b/packages/create-module-federation/src/handlebars/index.ts
@@ -0,0 +1,66 @@
+import { FS_RESOURCE } from '../materials';
+import { renderString, outputFs } from './utils';
+
+import type { FsMaterial, FsResource } from '../materials';
+
+type TargetFunction = (globMatch: string) => string;
+
+type RenderTemplateDirOptions = {
+  nodir?: boolean;
+  dot?: boolean;
+  ignore?: string | readonly string[];
+  parameters?: Record<string, string>;
+};
+
+export { renderString };
+
+export class HandlebarsAPI {
+  async renderTemplate(
+    templateResource: FsResource,
+    target: string,
+    outputFilePath: string,
+    parameters: Record<string, string> = {},
+  ) {
+    if (templateResource._type !== FS_RESOURCE) {
+      throw new Error('resource not match');
+    }
+    const resourceValue = await templateResource.value();
+    if (typeof resourceValue.content !== 'string') {
+      throw new Error(
+        `resource.value is not string, resourceValue=${
+          resourceValue as unknown as string
+        }`,
+      );
+    }
+    await outputFs(
+      target,
+      renderString(resourceValue.content, parameters),
+      outputFilePath,
+      { encoding: 'utf-8' },
+    );
+  }
+
+  async renderTemplateDir(
+    material: FsMaterial,
+    findGlob: string,
+    target: TargetFunction,
+    outputFilePath: string,
+    options?: RenderTemplateDirOptions,
+  ) {
+    const resourceMap = await material.find(findGlob, {
+      nodir: true,
+      ...options,
+    });
+    await Promise.all(
+      // resourceKey is relate path. example: in `garr-master/package.json`, package.json is resourceKey
+      Object.keys(resourceMap).map(async (resourceKey) => {
+        await this.renderTemplate(
+          material.get(resourceKey),
+          target(resourceKey),
+          outputFilePath,
+          options?.parameters,
+        );
+      }),
+    );
+  }
+}
diff --git a/packages/create-module-federation/src/handlebars/utils.ts b/packages/create-module-federation/src/handlebars/utils.ts
new file mode 100644
index 00000000000..73c93ff827f
--- /dev/null
+++ b/packages/create-module-federation/src/handlebars/utils.ts
@@ -0,0 +1,21 @@
+import fs from 'fs-extra';
+import path from 'path';
+import handlebars from 'handlebars';
+
+export function renderString(
+  template: string,
+  fullData: Record<string, unknown>,
+): string {
+  return handlebars.compile(template)(fullData) || '';
+}
+
+export async function outputFs(
+  file: string | number,
+  content: any,
+  outputPath: string,
+  options?: fs.WriteFileOptions | string,
+) {
+  const filePath = path.resolve(outputPath, file.toString());
+  await fs.mkdirp(path.dirname(filePath));
+  await fs.writeFile(filePath, content, options);
+}
diff --git a/packages/create-module-federation/src/index.ts b/packages/create-module-federation/src/index.ts
new file mode 100644
index 00000000000..165aa271a85
--- /dev/null
+++ b/packages/create-module-federation/src/index.ts
@@ -0,0 +1,20 @@
+import { create } from './create';
+
+interface Template {
+  template: string;
+  tools?: Record<string, string>;
+}
+
+export const TEMPLATES = [
+  'provider-modern',
+  'consumer-modern',
+  'provider-rsbuild',
+  'consumer-rsbuild',
+  'rslib',
+  'rslib-storybook',
+];
+
+create({
+  name: 'Module Federation',
+  templates: TEMPLATES,
+});
diff --git a/packages/create-module-federation/src/materials/FsMaterial.ts b/packages/create-module-federation/src/materials/FsMaterial.ts
new file mode 100644
index 00000000000..a91eabc506c
--- /dev/null
+++ b/packages/create-module-federation/src/materials/FsMaterial.ts
@@ -0,0 +1,48 @@
+import path from 'path';
+import glob from 'glob';
+import { FsResource } from './FsResource';
+
+const promisifyGlob = (
+  pattern: string,
+  options: glob.IOptions,
+): Promise<string[]> =>
+  new Promise((resolve, reject) => {
+    glob(pattern, options, (err, files) =>
+      err === null ? resolve(files) : reject(err),
+    );
+  });
+
+export class FsMaterial {
+  basePath: string;
+
+  constructor(basePath: string) {
+    this.basePath = basePath;
+  }
+
+  get(resourceKey: string) {
+    return new FsResource(
+      path.resolve(this.basePath, resourceKey),
+      resourceKey,
+    );
+  }
+
+  async find(
+    globStr: string,
+    options?: {
+      nodir?: boolean;
+      dot?: boolean;
+      ignore?: string | readonly string[];
+    },
+  ): Promise<Record<string, FsResource>> {
+    const matches = await promisifyGlob(globStr, {
+      cwd: path.resolve(this.basePath),
+      nodir: options?.nodir,
+      dot: options?.dot,
+      ignore: options?.ignore,
+    });
+    return matches.reduce<Record<string, FsResource>>((pre, cur) => {
+      pre[cur] = new FsResource(path.resolve(this.basePath, cur), cur);
+      return pre;
+    }, {});
+  }
+}
diff --git a/packages/create-module-federation/src/materials/FsResource.ts b/packages/create-module-federation/src/materials/FsResource.ts
new file mode 100644
index 00000000000..1dbbacd7d92
--- /dev/null
+++ b/packages/create-module-federation/src/materials/FsResource.ts
@@ -0,0 +1,29 @@
+import type { Buffer } from 'buffer';
+import path from 'path';
+import fs from 'fs-extra';
+import { IMAGE_EXT_LIST } from './constants';
+
+export const FS_RESOURCE = '_mf_fs_resource';
+
+export class FsResource {
+  _type: string = FS_RESOURCE;
+
+  filePath: string;
+
+  resourceKey: string;
+
+  constructor(filePath: string, resourceKey: string) {
+    this.filePath = filePath;
+    this.resourceKey = resourceKey;
+  }
+
+  async value(): Promise<{ content: string | Buffer }> {
+    const resourceFileExt = path.extname(this.filePath);
+    if (IMAGE_EXT_LIST.includes(resourceFileExt)) {
+      const buffer = await fs.readFile(path.resolve(this.filePath));
+      return { content: buffer };
+    }
+    const text = await fs.readFile(path.resolve(this.filePath), 'utf8');
+    return { content: text };
+  }
+}
diff --git a/packages/create-module-federation/src/materials/constants.ts b/packages/create-module-federation/src/materials/constants.ts
new file mode 100644
index 00000000000..32e6a4449ec
--- /dev/null
+++ b/packages/create-module-federation/src/materials/constants.ts
@@ -0,0 +1,12 @@
+export const IMAGE_EXT_LIST = [
+  '.jpg',
+  '.jpeg',
+  '.png',
+  '.gif',
+  '.bmp',
+  '.ico',
+  '.icon',
+  '.mpt',
+  '.psd',
+  '.wmf',
+];
diff --git a/packages/create-module-federation/src/materials/index.ts b/packages/create-module-federation/src/materials/index.ts
new file mode 100644
index 00000000000..4ec1a014781
--- /dev/null
+++ b/packages/create-module-federation/src/materials/index.ts
@@ -0,0 +1,2 @@
+export { FsMaterial } from './FsMaterial';
+export { FsResource, FS_RESOURCE } from './FsResource';
diff --git a/packages/create-module-federation/templates/consumer-modern-ts/module-federation.config.ts.handlebars b/packages/create-module-federation/templates/consumer-modern-ts/module-federation.config.ts.handlebars
new file mode 100644
index 00000000000..776aa71a4dd
--- /dev/null
+++ b/packages/create-module-federation/templates/consumer-modern-ts/module-federation.config.ts.handlebars
@@ -0,0 +1,12 @@
+import { createModuleFederationConfig } from '@module-federation/modern-js';
+
+export default createModuleFederationConfig({
+  name: '{{mfName}}',
+  remotes: {
+    'provider': 'provider@http://localhost:8080/mf-manifest.json',
+  },
+  shared: {
+    react: { singleton: true },
+    'react-dom': { singleton: true },
+  },
+});
diff --git a/packages/create-module-federation/templates/consumer-modern-ts/src/routes/page.tsx b/packages/create-module-federation/templates/consumer-modern-ts/src/routes/page.tsx
new file mode 100644
index 00000000000..b1970527406
--- /dev/null
+++ b/packages/create-module-federation/templates/consumer-modern-ts/src/routes/page.tsx
@@ -0,0 +1,34 @@
+import { Helmet } from '@modern-js/runtime/head';
+import './index.css';
+import { ComponentInspector } from '../components/ComponentInspector';
+import Header from 'provider/Header';
+import Description from 'provider/Description';
+import Footer from 'provider/Footer';
+
+const Index = () => (
+  <div className="container-box">
+    <Helmet>
+      <link
+        rel="icon"
+        type="image/x-icon"
+        href="https://lf3-static.bytednsdoc.com/obj/eden-cn/uhbfnupenuhf/favicon.ico"
+      />
+    </Helmet>
+
+    <div className="landing-page">
+      <ComponentInspector componentName="Header" mfName="provider">
+        <Header />
+      </ComponentInspector>
+
+      <ComponentInspector componentName="Description" mfName="provider">
+        <Description />
+      </ComponentInspector>
+
+      <ComponentInspector componentName="Footer" mfName="provider">
+        <Footer />
+      </ComponentInspector>
+    </div>
+  </div>
+);
+
+export default Index;
diff --git a/packages/create-module-federation/templates/consumer-rsbuild-ts/src/App.tsx b/packages/create-module-federation/templates/consumer-rsbuild-ts/src/App.tsx
new file mode 100644
index 00000000000..7932bce7d14
--- /dev/null
+++ b/packages/create-module-federation/templates/consumer-rsbuild-ts/src/App.tsx
@@ -0,0 +1,25 @@
+import './App.css';
+import { ComponentInspector } from './components/ComponentInspector';
+import Header from 'provider/Header';
+import Description from 'provider/Description';
+import Footer from 'provider/Footer';
+
+const App = () => {
+  return (
+    <div className="content">
+      <ComponentInspector componentName="Header" mfName="provider">
+        <Header />
+      </ComponentInspector>
+
+      <ComponentInspector componentName="Description" mfName="provider">
+        <Description />
+      </ComponentInspector>
+
+      <ComponentInspector componentName="Footer" mfName="provider">
+        <Footer />
+      </ComponentInspector>
+    </div>
+  );
+};
+
+export default App;
diff --git a/packages/create-module-federation/templates/lib-common/.gitignore b/packages/create-module-federation/templates/lib-common/.gitignore
new file mode 100644
index 00000000000..38d7344c8ca
--- /dev/null
+++ b/packages/create-module-federation/templates/lib-common/.gitignore
@@ -0,0 +1,13 @@
+# Local
+.DS_Store
+*.local
+*.log*
+
+# Dist
+node_modules
+dist/
+
+# IDE
+.vscode/*
+!.vscode/extensions.json
+.idea
diff --git a/packages/create-module-federation/templates/lib-common/module-federation.config.ts.handlebars b/packages/create-module-federation/templates/lib-common/module-federation.config.ts.handlebars
new file mode 100644
index 00000000000..e22e0e062c8
--- /dev/null
+++ b/packages/create-module-federation/templates/lib-common/module-federation.config.ts.handlebars
@@ -0,0 +1,17 @@
+export default {
+  name: '{{mfName}}',
+  exposes: {
+    '.': './src/index.tsx',
+    './Header': './src/Header.tsx',
+    './Description': './src/Description.tsx',
+    './Footer': './src/Footer.tsx',
+  },
+  shared: {
+    react: {
+      singleton: true,
+    },
+    'react-dom': {
+      singleton: true,
+    },
+  },
+}
diff --git a/packages/create-module-federation/templates/lib-common/rslib.config.ts b/packages/create-module-federation/templates/lib-common/rslib.config.ts
new file mode 100644
index 00000000000..76460fb94f9
--- /dev/null
+++ b/packages/create-module-federation/templates/lib-common/rslib.config.ts
@@ -0,0 +1,46 @@
+import { pluginReact } from '@rsbuild/plugin-react';
+import { defineConfig } from '@rslib/core';
+import { pluginModuleFederation } from '@module-federation/rsbuild-plugin';
+import moduleFederationConfig from './module-federation.config';
+
+const shared = {
+  dts: {
+    bundle: false,
+  },
+};
+
+export default defineConfig({
+  lib: [
+    {
+      ...shared,
+      format: 'esm',
+      output: {
+        distPath: {
+          root: './dist/esm',
+        },
+      },
+    },
+    {
+      ...shared,
+      format: 'cjs',
+      output: {
+        distPath: {
+          root: './dist/cjs',
+        },
+      },
+    },
+    {
+      ...shared,
+      format: 'mf',
+      output: {
+        distPath: {
+          root: './dist/mf',
+        },
+      },
+    },
+  ],
+  server: {
+    port: 3001,
+  },
+  plugins: [pluginReact(), pluginModuleFederation(moduleFederationConfig)],
+});
diff --git a/packages/create-module-federation/templates/lib-common/src/Description.tsx b/packages/create-module-federation/templates/lib-common/src/Description.tsx
new file mode 100644
index 00000000000..d096ea42e4d
--- /dev/null
+++ b/packages/create-module-federation/templates/lib-common/src/Description.tsx
@@ -0,0 +1,7 @@
+const Description = () => {
+  return (
+    <p className="description">Start building amazing things with Rsbuild.</p>
+  );
+};
+
+export default Description;
diff --git a/packages/create-module-federation/templates/lib-common/src/Footer.css b/packages/create-module-federation/templates/lib-common/src/Footer.css
new file mode 100644
index 00000000000..f305fc60934
--- /dev/null
+++ b/packages/create-module-federation/templates/lib-common/src/Footer.css
@@ -0,0 +1,46 @@
+.footer {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-top: 3rem;
+}
+
+.card {
+  padding: 1.5rem;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  height: 100px;
+  color: inherit;
+  text-decoration: none;
+  transition: 0.15s ease;
+  width: 45%;
+}
+
+.card:hover,
+.card:focus {
+  transform: scale(1.05);
+}
+
+.card h2 {
+  display: flex;
+  align-items: center;
+  font-size: 1.5rem;
+  margin: 0;
+  padding: 0;
+}
+
+.card p {
+  display: flex;
+  opacity: 0.6;
+  font-size: 0.9rem;
+  line-height: 1.5;
+  margin-top: 1rem;
+}
+
+.arrow-right {
+  width: 1.3rem;
+  margin-left: 0.5rem;
+  margin-top: 3px;
+}
diff --git a/packages/create-module-federation/templates/lib-common/src/Footer.tsx b/packages/create-module-federation/templates/lib-common/src/Footer.tsx
new file mode 100644
index 00000000000..00d1cbd97b1
--- /dev/null
+++ b/packages/create-module-federation/templates/lib-common/src/Footer.tsx
@@ -0,0 +1,74 @@
+import './Footer.css';
+
+const Footer = () => {
+  return (
+    <div className="footer">
+      <a
+        href="https://rsbuild.dev/guide/start/index"
+        target="_blank"
+        rel="noopener noreferrer"
+        className="card"
+      >
+        <h2>
+          Guide
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Guide"
+          />
+        </h2>
+        <p>Follow the guides to use all features of Rsbuild.</p>
+      </a>
+      <a
+        href="https://rsbuild.dev/guide/start/quick-start"
+        target="_blank"
+        className="card"
+        rel="noreferrer"
+      >
+        <h2>
+          Tutorials
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Tutorials"
+          />
+        </h2>
+        <p>Learn to use Rsbuild to create your first application.</p>
+      </a>
+      <a
+        href="https://rsbuild.dev/config/index"
+        target="_blank"
+        className="card"
+        rel="noreferrer"
+      >
+        <h2>
+          Config
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Config"
+          />
+        </h2>
+        <p>Find all configuration options provided by Modern.js.</p>
+      </a>
+      <a
+        href="https://github.com/web-infra-dev/rsbuild"
+        target="_blank"
+        rel="noopener noreferrer"
+        className="card"
+      >
+        <h2>
+          Github
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Github"
+          />
+        </h2>
+        <p>View the source code of Github, feel free to contribute.</p>
+      </a>
+    </div>
+  );
+};
+
+export default Footer;
diff --git a/packages/create-module-federation/templates/lib-common/src/Header.tsx b/packages/create-module-federation/templates/lib-common/src/Header.tsx
new file mode 100644
index 00000000000..53aff275ee8
--- /dev/null
+++ b/packages/create-module-federation/templates/lib-common/src/Header.tsx
@@ -0,0 +1,9 @@
+const Header = () => {
+  return (
+    <div className="header">
+      <h1>Rsbuild with React</h1>
+    </div>
+  );
+};
+
+export default Header;
diff --git a/packages/create-module-federation/templates/lib-common/src/index.tsx b/packages/create-module-federation/templates/lib-common/src/index.tsx
new file mode 100644
index 00000000000..3fac13945ef
--- /dev/null
+++ b/packages/create-module-federation/templates/lib-common/src/index.tsx
@@ -0,0 +1,3 @@
+export * as Description from './Description';
+export * as Footer from './Footer';
+export * as Header from './Header';
diff --git a/packages/create-module-federation/templates/lib-common/tsconfig.json b/packages/create-module-federation/templates/lib-common/tsconfig.json
new file mode 100644
index 00000000000..ae6b0a38bc7
--- /dev/null
+++ b/packages/create-module-federation/templates/lib-common/tsconfig.json
@@ -0,0 +1,14 @@
+{
+  "compilerOptions": {
+    "lib": ["DOM", "ES2021"],
+    "module": "ESNext",
+    "jsx": "react-jsx",
+    "strict": true,
+    "skipLibCheck": true,
+    "isolatedModules": true,
+    "resolveJsonModule": true,
+    "moduleResolution": "bundler",
+    "useDefineForClassFields": true
+  },
+  "include": ["src"]
+}
diff --git a/packages/create-module-federation/templates/modern-common/.browserslistrc b/packages/create-module-federation/templates/modern-common/.browserslistrc
new file mode 100644
index 00000000000..f5ceef6bb8e
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/.browserslistrc
@@ -0,0 +1,5 @@
+chrome >= 51
+edge >= 15
+firefox >= 54
+safari >= 10
+ios_saf >= 10
diff --git a/packages/create-module-federation/templates/modern-common/.gitignore b/packages/create-module-federation/templates/modern-common/.gitignore
new file mode 100644
index 00000000000..cd3fdf89df0
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/.gitignore
@@ -0,0 +1,30 @@
+.DS_Store
+
+.pnp
+.pnp.js
+.env.local
+.env.*.local
+.history
+*.log*
+
+node_modules/
+.yarn-integrity
+.pnpm-store/
+*.tsbuildinfo
+.changeset/pre.json
+
+dist/
+coverage/
+release/
+output/
+output_resource/
+log/
+
+.vscode/**/*
+!.vscode/settings.json
+!.vscode/extensions.json
+.idea/
+
+**/*/typings/auto-generated
+
+modern.config.local.*
diff --git a/packages/create-module-federation/templates/modern-common/.npmrc b/packages/create-module-federation/templates/modern-common/.npmrc
new file mode 100644
index 00000000000..319e41e69dc
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/.npmrc
@@ -0,0 +1 @@
+strict-peer-dependencies=false
diff --git a/packages/create-module-federation/templates/modern-common/.nvmrc b/packages/create-module-federation/templates/modern-common/.nvmrc
new file mode 100644
index 00000000000..a77793ecc52
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/.nvmrc
@@ -0,0 +1 @@
+lts/hydrogen
diff --git a/packages/create-module-federation/templates/modern-common/.vscode/extensions.json b/packages/create-module-federation/templates/modern-common/.vscode/extensions.json
new file mode 100644
index 00000000000..de9dced4ecd
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/.vscode/extensions.json
@@ -0,0 +1,14 @@
+{
+  "recommendations": [
+    "styled-components.vscode-styled-components",
+    "EditorConfig.editorconfig",
+    "streetsidesoftware.code-spell-checker",
+    "codezombiech.gitignore",
+    "aaron-bond.better-comments",
+    "jasonnutter.search-node-modules",
+    "jock.svg",
+    "mikestead.dotenv",
+    "vscode-icons-team.vscode-icons",
+    "biomejs.biome"
+  ]
+}
diff --git a/packages/create-module-federation/templates/modern-common/.vscode/settings.json b/packages/create-module-federation/templates/modern-common/.vscode/settings.json
new file mode 100644
index 00000000000..7326d94d7a8
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/.vscode/settings.json
@@ -0,0 +1,88 @@
+{
+  "files.associations": {
+    ".code-workspace": "jsonc",
+    ".stylelintrc": "jsonc",
+    "stylelintrc": "jsonc",
+    "README": "markdown"
+  },
+  "search.useIgnoreFiles": true,
+  "search.exclude": {
+    "**/dist": true,
+    "**/*.log": true,
+    "**/*.pid": true,
+    "**/.git": true,
+    "**/node_modules": true
+  },
+  //
+  "editor.rulers": [80, 120],
+  "files.eol": "\n",
+  "files.trimTrailingWhitespace": true,
+  "files.insertFinalNewline": true,
+  //
+  "cSpell.diagnosticLevel": "Hint",
+  "javascript.validate.enable": false,
+  "typescript.validate.enable": true,
+  "css.validate": false,
+  "scss.validate": false,
+  "less.validate": false,
+  "[css]": {
+    "editor.formatOnType": true,
+    "editor.formatOnPaste": true,
+    "editor.formatOnSave": true
+  },
+  "[scss]": {
+    "editor.formatOnType": true,
+    "editor.formatOnPaste": true,
+    "editor.formatOnSave": true
+  },
+  "[less]": {
+    "editor.formatOnType": true,
+    "editor.formatOnPaste": true,
+    "editor.formatOnSave": true
+  },
+  "editor.codeActionsOnSave": {
+    "quickfix.biome": "explicit"
+  },
+  "editor.defaultFormatter": "biomejs.biome",
+  "editor.formatOnSave": true,
+  "[typescript]": {
+    "editor.defaultFormatter": "biomejs.biome",
+    "editor.codeActionsOnSave": {
+      "quickfix.biome": "explicit",
+      "source.organizeImports": "never",
+      "source.organizeImports.biome": "explicit"
+    }
+  },
+  "[typescriptreact]": {
+    "editor.defaultFormatter": "biomejs.biome",
+    "editor.codeActionsOnSave": {
+      "quickfix.biome": "explicit",
+      "source.organizeImports": "never",
+      "source.organizeImports.biome": "explicit"
+    }
+  },
+  "[json]": {
+    "editor.defaultFormatter": "biomejs.biome"
+  },
+  "[jsonc]": {
+    "editor.defaultFormatter": "biomejs.biome"
+  },
+  "[javascriptreact]": {
+    "editor.defaultFormatter": "biomejs.biome",
+    "editor.codeActionsOnSave": {
+      "quickfix.biome": "explicit",
+      "source.organizeImports": "never",
+      "source.organizeImports.biome": "explicit"
+    }
+  },
+  "[javascript]": {
+    "editor.defaultFormatter": "biomejs.biome",
+    "editor.codeActionsOnSave": {
+      "quickfix.biome": "explicit",
+      "source.organizeImports": "never",
+      "source.organizeImports.biome": "explicit"
+    }
+  },
+  "emmet.triggerExpansionOnTab": true,
+  "typescript.tsdk": "node_modules/typescript/lib"
+}
diff --git a/packages/create-module-federation/templates/modern-common/README.md b/packages/create-module-federation/templates/modern-common/README.md
new file mode 100644
index 00000000000..38d1d2a1c55
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/README.md
@@ -0,0 +1,37 @@
+# Modern.js App
+
+## Setup
+
+Install the dependencies:
+
+```bash
+pnpm install
+```
+
+## Get Started
+
+Start the dev server:
+
+```bash
+pnpm dev
+```
+
+Enable optional features or add a new entry:
+
+```bash
+pnpm new
+```
+
+Build the app for production:
+
+```bash
+pnpm build
+```
+
+Preview the production build locally:
+
+```bash
+pnpm serve
+```
+
+For more information, see the [Modern.js documentation](https://modernjs.dev/en).
diff --git a/packages/create-module-federation/templates/modern-common/biome.json b/packages/create-module-federation/templates/modern-common/biome.json
new file mode 100644
index 00000000000..58a177b1d2e
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/biome.json
@@ -0,0 +1,34 @@
+{
+  "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json",
+  "vcs": {
+    "enabled": true,
+    "defaultBranch": "main",
+    "clientKind": "git",
+    "useIgnoreFile": true
+  },
+  "formatter": {
+    "enabled": true,
+    "indentStyle": "space"
+  },
+  "javascript": {
+    "formatter": {
+      "quoteStyle": "single",
+      "arrowParentheses": "asNeeded",
+      "jsxQuoteStyle": "double",
+      "lineWidth": 80
+    }
+  },
+  "linter": {
+    "enabled": true,
+    "rules": {
+      "recommended": true
+    }
+  },
+  "organizeImports": {
+    "enabled": true
+  },
+  "files": {
+    "ignoreUnknown": true,
+    "ignore": [".vscode/**/*", "node_modules/**/*", "dist/**/*"]
+  }
+}
diff --git a/packages/create-module-federation/templates/modern-common/modern.config.ts b/packages/create-module-federation/templates/modern-common/modern.config.ts
new file mode 100644
index 00000000000..acaec611f69
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/modern.config.ts
@@ -0,0 +1,15 @@
+import { appTools, defineConfig } from '@modern-js/app-tools';
+import { moduleFederationPlugin } from '@module-federation/modern-js';
+
+// https://modernjs.dev/en/configure/app/usage
+export default defineConfig({
+  runtime: {
+    router: true,
+  },
+  plugins: [
+    appTools({
+      bundler: 'rspack', // Set to 'webpack' to enable webpack
+    }),
+    moduleFederationPlugin(),
+  ],
+});
diff --git a/packages/create-module-federation/templates/modern-common/package.json b/packages/create-module-federation/templates/modern-common/package.json
new file mode 100644
index 00000000000..92467bd2e56
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/package.json
@@ -0,0 +1,45 @@
+{
+  "name": "new-provider",
+  "version": "0.1.0",
+  "scripts": {
+    "reset": "npx rimraf node_modules ./**/node_modules",
+    "dev": "modern dev",
+    "build": "modern build",
+    "start": "modern start",
+    "serve": "modern serve",
+    "new": "modern new",
+    "lint": "biome check",
+    "prepare": "simple-git-hooks",
+    "upgrade": "modern upgrade"
+  },
+  "engines": {
+    "node": ">=16.18.1"
+  },
+  "lint-staged": {
+    "*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}": [
+      "biome check --files-ignore-unknown=true"
+    ]
+  },
+  "simple-git-hooks": {
+    "pre-commit": "npx lint-staged"
+  },
+  "dependencies": {
+    "@modern-js/runtime": "2.63.7",
+    "react": "^18.3.1",
+    "react-dom": "^18.3.1"
+  },
+  "devDependencies": {
+    "@modern-js/app-tools": "2.63.7",
+    "@modern-js/tsconfig": "2.63.7",
+    "@biomejs/biome": "1.8.3",
+    "typescript": "~5.0.4",
+    "@types/jest": "~29.2.4",
+    "@types/node": "~18.11.9",
+    "@types/react": "^18.3.11",
+    "@types/react-dom": "~18.3.1",
+    "lint-staged": "~13.1.0",
+    "simple-git-hooks": "^2.11.1",
+    "rimraf": "^6.0.1",
+    "@module-federation/modern-js": "^0.8.9"
+  }
+}
diff --git a/packages/create-module-federation/templates/modern-common/package.json.handlebars b/packages/create-module-federation/templates/modern-common/package.json.handlebars
new file mode 100644
index 00000000000..85e58a25a05
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/package.json.handlebars
@@ -0,0 +1,45 @@
+{
+  "name": "{{ mfName }}",
+  "version": "0.1.0",
+  "scripts": {
+    "reset": "npx rimraf node_modules ./**/node_modules",
+    "dev": "modern dev",
+    "build": "modern build",
+    "start": "modern start",
+    "serve": "modern serve",
+    "new": "modern new",
+    "lint": "biome check",
+    "prepare": "simple-git-hooks",
+    "upgrade": "modern upgrade"
+  },
+  "engines": {
+    "node": ">=16.18.1"
+  },
+  "lint-staged": {
+    "*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}": [
+      "biome check --files-ignore-unknown=true"
+    ]
+  },
+  "simple-git-hooks": {
+    "pre-commit": "npx lint-staged"
+  },
+  "dependencies": {
+    "@modern-js/runtime": "2.63.7",
+    "react": "^18.3.1",
+    "react-dom": "^18.3.1"
+  },
+  "devDependencies": {
+    "@modern-js/app-tools": "2.63.7",
+    "@modern-js/tsconfig": "2.63.7",
+    "@biomejs/biome": "1.8.3",
+    "typescript": "~5.0.4",
+    "@types/jest": "~29.2.4",
+    "@types/node": "~18.11.9",
+    "@types/react": "^18.3.11",
+    "@types/react-dom": "~18.3.1",
+    "lint-staged": "~13.1.0",
+    "simple-git-hooks": "^2.11.1",
+    "rimraf": "^6.0.1",
+    "@module-federation/modern-js":"^0.8.9"
+  }
+}
diff --git a/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.css b/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.css
new file mode 100644
index 00000000000..da68e5015ea
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.css
@@ -0,0 +1,86 @@
+.component-inspector {
+  position: relative;
+  display: inline-block;
+}
+
+.inspector-info {
+  position: fixed;
+  z-index: 1000;
+  background: #1a1a1a;
+  padding: 4px 8px;
+  border-radius: 4px;
+  font-size: 12px;
+  color: #fff;
+  pointer-events: none;
+  display: flex;
+  align-items: center;
+  gap: 8px;
+}
+
+.inspector-overlay {
+  position: fixed;
+  border-radius: 4px;
+  pointer-events: none;
+  z-index: 999;
+  background:
+    linear-gradient(90deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 0,
+    linear-gradient(90deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 100%,
+    linear-gradient(0deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 0,
+    linear-gradient(0deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 100% 0;
+  background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
+  background-size:
+    200% 3px,
+    200% 3px,
+    3px 200%,
+    3px 200%; /* 将边框从 2px 加粗到 3px */
+  animation: borderRotate 4s linear infinite;
+}
+
+@keyframes borderRotate {
+  0% {
+    background-position:
+      0% 0,
+      0% 100%,
+      0 0%,
+      100% 0%;
+  }
+  100% {
+    background-position:
+      200% 0,
+      -200% 100%,
+      0 -200%,
+      100% 200%;
+  }
+}
+.mf-tag {
+  color: #646cff;
+  font-weight: 500;
+  position: relative;
+  padding-left: 16px;
+}
+
+.mf-tag::before {
+  content: '';
+  position: absolute;
+  left: 0;
+  top: 50%;
+  transform: translateY(-50%);
+  width: 12px;
+  height: 12px;
+  background-image: url('https://module-federation.io/svg.svg');
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: contain;
+}
+
+.divider {
+  color: #4a4a4a;
+}
+
+.gradient-text {
+  background: linear-gradient(90deg, #60a5fa, #ec4899);
+  -webkit-background-clip: text;
+  background-clip: text;
+  -webkit-text-fill-color: transparent;
+  font-weight: 500;
+}
diff --git a/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.tsx b/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.tsx
new file mode 100644
index 00000000000..50128edf471
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.tsx
@@ -0,0 +1,68 @@
+import React, { useState } from 'react';
+import './ComponentInspector.css';
+
+interface InspectorInfo {
+  top: number;
+  left: number;
+  width: number;
+  height: number;
+}
+
+export const ComponentInspector: React.FC<{
+  children: React.ReactNode;
+  componentName: string;
+  mfName: string;
+}> = ({ children, componentName, mfName }) => {
+  const [inspectorInfo, setInspectorInfo] = useState<InspectorInfo | null>(
+    null,
+  );
+
+  const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {
+    const rect = e.currentTarget.getBoundingClientRect();
+    setInspectorInfo({
+      top: rect.top,
+      left: rect.left,
+      width: rect.width,
+      height: rect.height,
+    });
+  };
+
+  const handleMouseLeave = () => {
+    setInspectorInfo(null);
+  };
+
+  return (
+    <div
+      className="component-inspector"
+      onMouseEnter={handleMouseEnter}
+      onMouseLeave={handleMouseLeave}
+    >
+      {children}
+      {inspectorInfo && (
+        <>
+          <div
+            className="inspector-info"
+            style={{
+              top: `${inspectorInfo.top - 30}px`,
+              left: `${inspectorInfo.left}px`,
+              width: `${inspectorInfo.width}px`,
+            }}
+          >
+            <span className="mf-tag">{mfName}</span>
+            <span className="divider">|</span>
+            <span className="gradient-text">{componentName}</span>
+          </div>
+          <div
+            className="inspector-overlay"
+            style={{
+              top: `${inspectorInfo.top}px`,
+              left: `${inspectorInfo.left}px`,
+              width: `${inspectorInfo.width}px`,
+              height: `${inspectorInfo.height}px`,
+            }}
+          />
+        </>
+      )}
+    </div>
+  );
+};
diff --git a/packages/create-module-federation/templates/modern-common/src/modern-app-env.d.ts b/packages/create-module-federation/templates/modern-common/src/modern-app-env.d.ts
new file mode 100644
index 00000000000..3f453508cee
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/src/modern-app-env.d.ts
@@ -0,0 +1,3 @@
+/// <reference types='@modern-js/app-tools/types' />
+/// <reference types='@modern-js/runtime/types' />
+/// <reference types='@modern-js/runtime/types/router' />
diff --git a/packages/create-module-federation/templates/modern-common/src/modern.runtime.ts b/packages/create-module-federation/templates/modern-common/src/modern.runtime.ts
new file mode 100644
index 00000000000..7437c8314e5
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/src/modern.runtime.ts
@@ -0,0 +1,3 @@
+import { defineRuntimeConfig } from '@modern-js/runtime';
+
+export default defineRuntimeConfig({});
diff --git a/packages/create-module-federation/templates/modern-common/src/routes/index.css b/packages/create-module-federation/templates/modern-common/src/routes/index.css
new file mode 100644
index 00000000000..d8a5be9ffdd
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/src/routes/index.css
@@ -0,0 +1,41 @@
+html,
+body {
+  padding: 0;
+  margin: 0;
+  font-family:
+    PingFang SC,
+    Hiragino Sans GB,
+    Microsoft YaHei,
+    Arial,
+    sans-serif;
+  background: linear-gradient(to bottom, transparent, #fff) #eceeef;
+}
+
+p {
+  margin: 0;
+}
+
+* {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  box-sizing: border-box;
+}
+
+.container-box {
+  min-height: 100vh;
+  max-width: 100%;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  padding: 50px;
+}
+
+.landing-page {
+  padding: 20px;
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+}
diff --git a/packages/create-module-federation/templates/modern-common/src/routes/layout.tsx b/packages/create-module-federation/templates/modern-common/src/routes/layout.tsx
new file mode 100644
index 00000000000..6433ea79e92
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/src/routes/layout.tsx
@@ -0,0 +1,9 @@
+import { Outlet } from '@modern-js/runtime/router';
+
+export default function Layout() {
+  return (
+    <div>
+      <Outlet />
+    </div>
+  );
+}
diff --git a/packages/create-module-federation/templates/modern-common/tsconfig.json b/packages/create-module-federation/templates/modern-common/tsconfig.json
new file mode 100644
index 00000000000..ce7f951eefc
--- /dev/null
+++ b/packages/create-module-federation/templates/modern-common/tsconfig.json
@@ -0,0 +1,14 @@
+{
+  "extends": "@modern-js/tsconfig/base",
+  "compilerOptions": {
+    "declaration": false,
+    "jsx": "preserve",
+    "baseUrl": "./",
+    "paths": {
+      "@/*": ["./src/*"],
+      "@shared/*": ["./shared/*"]
+    }
+  },
+  "include": ["src", "shared", "config", "modern.config.ts"],
+  "exclude": ["**/node_modules"]
+}
diff --git a/packages/create-module-federation/templates/provider-modern-ts/module-federation.config.ts.handlebars b/packages/create-module-federation/templates/provider-modern-ts/module-federation.config.ts.handlebars
new file mode 100644
index 00000000000..fe617d54808
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-modern-ts/module-federation.config.ts.handlebars
@@ -0,0 +1,14 @@
+import { createModuleFederationConfig } from '@module-federation/modern-js';
+
+export default createModuleFederationConfig({
+  name: '{{mfName}}',
+  exposes: {
+    './Header': './src/components/Header.tsx',
+    './Description': './src/components/Description.tsx',
+    './Footer': './src/components/Footer.tsx',
+  },
+  shared: {
+    react: { singleton: true },
+    'react-dom': { singleton: true },
+  },
+});
diff --git a/packages/create-module-federation/templates/provider-modern-ts/src/components/Description.css b/packages/create-module-federation/templates/provider-modern-ts/src/components/Description.css
new file mode 100644
index 00000000000..ffb946c3e57
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-modern-ts/src/components/Description.css
@@ -0,0 +1,23 @@
+.description {
+  text-align: center;
+  line-height: 1.5;
+  font-size: 1.3rem;
+  color: #1b3a42;
+  margin-bottom: 5rem;
+}
+
+.code {
+  background: #fafafa;
+  border-radius: 12px;
+  padding: 0.6rem 0.9rem;
+  font-size: 1.05rem;
+  font-family:
+    Menlo,
+    Monaco,
+    Lucida Console,
+    Liberation Mono,
+    DejaVu Sans Mono,
+    Bitstream Vera Sans Mono,
+    Courier New,
+    monospace;
+}
diff --git a/packages/create-module-federation/templates/provider-modern-ts/src/components/Description.tsx b/packages/create-module-federation/templates/provider-modern-ts/src/components/Description.tsx
new file mode 100644
index 00000000000..8939eb88e7b
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-modern-ts/src/components/Description.tsx
@@ -0,0 +1,11 @@
+import './Description.css';
+
+const Description = () => {
+  return (
+    <p className="description">
+      Get started by editing <code className="code">src/routes/page.tsx</code>
+    </p>
+  );
+};
+
+export default Description;
diff --git a/packages/create-module-federation/templates/provider-modern-ts/src/components/Footer.css b/packages/create-module-federation/templates/provider-modern-ts/src/components/Footer.css
new file mode 100644
index 00000000000..da7bda94fdf
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-modern-ts/src/components/Footer.css
@@ -0,0 +1,45 @@
+.footer {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 1100px;
+  margin-top: 3rem;
+}
+
+.card {
+  padding: 1.5rem;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  height: 100px;
+  color: inherit;
+  text-decoration: none;
+  transition: 0.15s ease;
+  width: 45%;
+}
+
+.card:hover,
+.card:focus {
+  transform: scale(1.05);
+}
+
+.card h2 {
+  display: flex;
+  align-items: center;
+  font-size: 1.5rem;
+  margin: 0;
+  padding: 0;
+}
+
+.card p {
+  opacity: 0.6;
+  font-size: 0.9rem;
+  line-height: 1.5;
+  margin-top: 1rem;
+}
+
+.arrow-right {
+  width: 1.3rem;
+  margin-left: 0.5rem;
+  margin-top: 3px;
+}
diff --git a/packages/create-module-federation/templates/provider-modern-ts/src/components/Footer.tsx b/packages/create-module-federation/templates/provider-modern-ts/src/components/Footer.tsx
new file mode 100644
index 00000000000..376c31c27e6
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-modern-ts/src/components/Footer.tsx
@@ -0,0 +1,74 @@
+import './Footer.css';
+
+const Footer = () => {
+  return (
+    <div className="footer">
+      <a
+        href="https://modernjs.dev/guides/get-started/introduction.html"
+        target="_blank"
+        rel="noopener noreferrer"
+        className="card"
+      >
+        <h2>
+          Guide
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Guide"
+          />
+        </h2>
+        <p>Follow the guides to use all features of Modern.js.</p>
+      </a>
+      <a
+        href="https://modernjs.dev/tutorials/foundations/introduction.html"
+        target="_blank"
+        className="card"
+        rel="noreferrer"
+      >
+        <h2>
+          Tutorials
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Tutorials"
+          />
+        </h2>
+        <p>Learn to use Modern.js to create your first application.</p>
+      </a>
+      <a
+        href="https://modernjs.dev/configure/app/usage.html"
+        target="_blank"
+        className="card"
+        rel="noreferrer"
+      >
+        <h2>
+          Config
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Config"
+          />
+        </h2>
+        <p>Find all configuration options provided by Modern.js.</p>
+      </a>
+      <a
+        href="https://github.com/web-infra-dev/modern.js"
+        target="_blank"
+        rel="noopener noreferrer"
+        className="card"
+      >
+        <h2>
+          Github
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Github"
+          />
+        </h2>
+        <p>View the source code of Github, feel free to contribute.</p>
+      </a>
+    </div>
+  );
+};
+
+export default Footer;
diff --git a/packages/create-module-federation/templates/provider-modern-ts/src/components/Header.css b/packages/create-module-federation/templates/provider-modern-ts/src/components/Header.css
new file mode 100644
index 00000000000..02c9c808702
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-modern-ts/src/components/Header.css
@@ -0,0 +1,11 @@
+.header {
+  display: flex;
+  margin: 4rem 0 4rem;
+  align-items: center;
+  font-size: 4rem;
+  font-weight: 600;
+}
+
+.name {
+  color: #4ecaff;
+}
diff --git a/packages/create-module-federation/templates/provider-modern-ts/src/components/Header.tsx b/packages/create-module-federation/templates/provider-modern-ts/src/components/Header.tsx
new file mode 100644
index 00000000000..89da81b8a6f
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-modern-ts/src/components/Header.tsx
@@ -0,0 +1,17 @@
+import './Header.css';
+
+const Header = () => {
+  return (
+    <div className="header">
+      Welcome to
+      <img
+        className="logo"
+        src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/modern-js-logo.svg"
+        alt="Modern.js Logo"
+      />
+      <p className="name">Modern.js</p>
+    </div>
+  );
+};
+
+export default Header;
diff --git a/packages/create-module-federation/templates/provider-modern-ts/src/routes/page.tsx b/packages/create-module-federation/templates/provider-modern-ts/src/routes/page.tsx
new file mode 100644
index 00000000000..18bbf92c261
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-modern-ts/src/routes/page.tsx
@@ -0,0 +1,34 @@
+import { Helmet } from '@modern-js/runtime/head';
+import './index.css';
+import { ComponentInspector } from '../components/ComponentInspector';
+import Header from '../components/Header';
+import Description from '../components/Description';
+import Footer from '../components/Footer';
+
+const Index = () => (
+  <div className="container-box">
+    <Helmet>
+      <link
+        rel="icon"
+        type="image/x-icon"
+        href="https://lf3-static.bytednsdoc.com/obj/eden-cn/uhbfnupenuhf/favicon.ico"
+      />
+    </Helmet>
+
+    <div className="landing-page">
+      <ComponentInspector componentName="Header" mfName="provider">
+        <Header />
+      </ComponentInspector>
+
+      <ComponentInspector componentName="Description" mfName="provider">
+        <Description />
+      </ComponentInspector>
+
+      <ComponentInspector componentName="Footer" mfName="provider">
+        <Footer />
+      </ComponentInspector>
+    </div>
+  </div>
+);
+
+export default Index;
diff --git a/packages/create-module-federation/templates/provider-rsbuild-ts/module-federation.config.ts.handlebars b/packages/create-module-federation/templates/provider-rsbuild-ts/module-federation.config.ts.handlebars
new file mode 100644
index 00000000000..7ee76fdad18
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rsbuild-ts/module-federation.config.ts.handlebars
@@ -0,0 +1,14 @@
+import { createModuleFederationConfig } from '@module-federation/rsbuild-plugin';
+
+export default createModuleFederationConfig({
+  name: '{{mfName}}',
+  exposes: {
+    './Header': './src/components/Header.tsx',
+    './Description': './src/components/Description.tsx',
+    './Footer': './src/components/Footer.tsx',
+  },
+  shared: {
+    react: { singleton: true },
+    'react-dom': { singleton: true },
+  },
+});
diff --git a/packages/create-module-federation/templates/provider-rsbuild-ts/src/App.tsx b/packages/create-module-federation/templates/provider-rsbuild-ts/src/App.tsx
new file mode 100644
index 00000000000..fbd2f7a18e3
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rsbuild-ts/src/App.tsx
@@ -0,0 +1,25 @@
+import './App.css';
+import { ComponentInspector } from './components/ComponentInspector';
+import Header from './components/Header';
+import Description from './components/Description';
+import Footer from './components/Footer';
+
+const App = () => {
+  return (
+    <div className="content">
+      <ComponentInspector componentName="Header" mfName="provider">
+        <Header />
+      </ComponentInspector>
+
+      <ComponentInspector componentName="Description" mfName="provider">
+        <Description />
+      </ComponentInspector>
+
+      <ComponentInspector componentName="Footer" mfName="provider">
+        <Footer />
+      </ComponentInspector>
+    </div>
+  );
+};
+
+export default App;
diff --git a/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Description.tsx b/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Description.tsx
new file mode 100644
index 00000000000..d096ea42e4d
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Description.tsx
@@ -0,0 +1,7 @@
+const Description = () => {
+  return (
+    <p className="description">Start building amazing things with Rsbuild.</p>
+  );
+};
+
+export default Description;
diff --git a/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Footer.css b/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Footer.css
new file mode 100644
index 00000000000..f305fc60934
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Footer.css
@@ -0,0 +1,46 @@
+.footer {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-top: 3rem;
+}
+
+.card {
+  padding: 1.5rem;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  height: 100px;
+  color: inherit;
+  text-decoration: none;
+  transition: 0.15s ease;
+  width: 45%;
+}
+
+.card:hover,
+.card:focus {
+  transform: scale(1.05);
+}
+
+.card h2 {
+  display: flex;
+  align-items: center;
+  font-size: 1.5rem;
+  margin: 0;
+  padding: 0;
+}
+
+.card p {
+  display: flex;
+  opacity: 0.6;
+  font-size: 0.9rem;
+  line-height: 1.5;
+  margin-top: 1rem;
+}
+
+.arrow-right {
+  width: 1.3rem;
+  margin-left: 0.5rem;
+  margin-top: 3px;
+}
diff --git a/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Footer.tsx b/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Footer.tsx
new file mode 100644
index 00000000000..00d1cbd97b1
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Footer.tsx
@@ -0,0 +1,74 @@
+import './Footer.css';
+
+const Footer = () => {
+  return (
+    <div className="footer">
+      <a
+        href="https://rsbuild.dev/guide/start/index"
+        target="_blank"
+        rel="noopener noreferrer"
+        className="card"
+      >
+        <h2>
+          Guide
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Guide"
+          />
+        </h2>
+        <p>Follow the guides to use all features of Rsbuild.</p>
+      </a>
+      <a
+        href="https://rsbuild.dev/guide/start/quick-start"
+        target="_blank"
+        className="card"
+        rel="noreferrer"
+      >
+        <h2>
+          Tutorials
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Tutorials"
+          />
+        </h2>
+        <p>Learn to use Rsbuild to create your first application.</p>
+      </a>
+      <a
+        href="https://rsbuild.dev/config/index"
+        target="_blank"
+        className="card"
+        rel="noreferrer"
+      >
+        <h2>
+          Config
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Config"
+          />
+        </h2>
+        <p>Find all configuration options provided by Modern.js.</p>
+      </a>
+      <a
+        href="https://github.com/web-infra-dev/rsbuild"
+        target="_blank"
+        rel="noopener noreferrer"
+        className="card"
+      >
+        <h2>
+          Github
+          <img
+            className="arrow-right"
+            src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/arrow-right.svg"
+            alt="Github"
+          />
+        </h2>
+        <p>View the source code of Github, feel free to contribute.</p>
+      </a>
+    </div>
+  );
+};
+
+export default Footer;
diff --git a/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Header.tsx b/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Header.tsx
new file mode 100644
index 00000000000..53aff275ee8
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rsbuild-ts/src/components/Header.tsx
@@ -0,0 +1,9 @@
+const Header = () => {
+  return (
+    <div className="header">
+      <h1>Rsbuild with React</h1>
+    </div>
+  );
+};
+
+export default Header;
diff --git a/packages/create-module-federation/templates/provider-rslib-storybook-ts/.storybook/main.ts b/packages/create-module-federation/templates/provider-rslib-storybook-ts/.storybook/main.ts
new file mode 100644
index 00000000000..7fddb66944c
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rslib-storybook-ts/.storybook/main.ts
@@ -0,0 +1,41 @@
+import { dirname, join } from 'node:path';
+import type { StorybookConfig } from 'storybook-react-rsbuild';
+
+/**
+ * This function is used to resolve the absolute path of a package.
+ * It is needed in projects that use Yarn PnP or are set up within a monorepo.
+ */
+function getAbsolutePath(value: string): any {
+  return dirname(require.resolve(join(value, 'package.json')));
+}
+
+const config: StorybookConfig = {
+  stories: [
+    '../stories/**/*.mdx',
+    '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)',
+  ],
+  framework: {
+    name: getAbsolutePath('storybook-react-rsbuild'),
+    options: {},
+  },
+  addons: [
+    {
+      name: getAbsolutePath('storybook-addon-rslib'),
+      options: {
+        rslib: {
+          include: ['**/stories/**'],
+        },
+      },
+    },
+    {
+      name: '@module-federation/storybook-addon/preset',
+      options: {
+        remotes: {
+          provider: 'provider@http://localhost:3001/mf-manifest.json',
+        },
+      },
+    },
+  ],
+};
+
+export default config;
diff --git a/packages/create-module-federation/templates/provider-rslib-storybook-ts/README.md b/packages/create-module-federation/templates/provider-rslib-storybook-ts/README.md
new file mode 100644
index 00000000000..f8d0efb3119
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rslib-storybook-ts/README.md
@@ -0,0 +1,27 @@
+# Rslib MF Project
+
+This example demonstrates how to use Rslib to build a simple Module Federation React component.
+
+### Command
+
+Build package
+
+```
+pnpm build
+```
+
+Dev package
+
+1. 
+
+```
+pnpm mf-dev
+```
+
+2.
+
+```
+pnpm storybook
+```
+
+visit http://localhost:6006
diff --git a/packages/create-module-federation/templates/provider-rslib-storybook-ts/package.json.handlebars b/packages/create-module-federation/templates/provider-rslib-storybook-ts/package.json.handlebars
new file mode 100644
index 00000000000..4d5eced7abc
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rslib-storybook-ts/package.json.handlebars
@@ -0,0 +1,34 @@
+{
+  "name": "{{ mfName }}",
+  "version": "0.0.0",
+  "type": "module",
+  "exports": {
+    ".": {
+      "types": "./dist/index.d.ts",
+      "import": "./dist/index.js"
+    }
+  },
+  "module": "./dist/index.js",
+  "types": "./dist/index.d.ts",
+  "files": [
+    "dist"
+  ],
+  "scripts": {
+    "build": "rslib build",
+    "dev": "rslib build --watch",
+    "mf-dev": "rslib mf-dev"
+  },
+  "devDependencies": {
+    "@rsbuild/core": "1.2.0-beta.0",
+    "@rsbuild/plugin-react": "^1.1.0",
+    "@rslib/core": "^0.3.1",
+    "@types/react": "^19.0.4",
+    "react": "^19.0.0",
+    "typescript": "^5.7.3",
+    "@module-federation/rsbuild-plugin":"^0.8.9"
+  },
+  "peerDependencies": {
+    "react": ">=16.9.0",
+    "react-dom": ">=16.9.0"
+  }
+}
diff --git a/packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Description.stories.tsx b/packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Description.stories.tsx
new file mode 100644
index 00000000000..7076f97ef50
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Description.stories.tsx
@@ -0,0 +1,11 @@
+import React from 'react';
+import Description from 'provider/Description';
+
+const Component = () => <Description />;
+
+export default {
+  title: 'Description Component',
+  component: Component,
+};
+
+export const Basic = {};
diff --git a/packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Footer.stories.tsx b/packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Footer.stories.tsx
new file mode 100644
index 00000000000..32b189aac8b
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Footer.stories.tsx
@@ -0,0 +1,11 @@
+import React from 'react';
+import Footer from 'provider/Footer';
+
+const Component = () => <Footer />;
+
+export default {
+  title: 'Footer Component',
+  component: Component,
+};
+
+export const Basic = {};
diff --git a/packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Header.stories.tsx b/packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Header.stories.tsx
new file mode 100644
index 00000000000..9b2fd51aeff
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rslib-storybook-ts/stories/Header.stories.tsx
@@ -0,0 +1,11 @@
+import React from 'react';
+import Header from 'provider/Header';
+
+const Component = () => <Header />;
+
+export default {
+  title: 'Header Component',
+  component: Component,
+};
+
+export const Basic = {};
diff --git a/packages/create-module-federation/templates/provider-rslib-ts/README.md b/packages/create-module-federation/templates/provider-rslib-ts/README.md
new file mode 100644
index 00000000000..cffe4ed5fd3
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rslib-ts/README.md
@@ -0,0 +1,19 @@
+# Rslib MF Project
+
+This example demonstrates how to use Rslib to build a simple Module Federation React component.
+
+### Command
+
+Build package
+
+```
+pnpm build
+```
+
+Dev package
+
+
+```
+pnpm mf-dev
+```
+
diff --git a/packages/create-module-federation/templates/provider-rslib-ts/package.json.handlebars b/packages/create-module-federation/templates/provider-rslib-ts/package.json.handlebars
new file mode 100644
index 00000000000..0b45bb19815
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rslib-ts/package.json.handlebars
@@ -0,0 +1,48 @@
+{
+  "name": "{{ mfName }}",
+  "version": "0.0.0",
+  "type": "module",
+  "exports": {
+    ".": {
+      "types": "./dist/index.d.ts",
+      "import": "./dist/index.js"
+    }
+  },
+  "module": "./dist/index.js",
+  "types": "./dist/index.d.ts",
+  "files": [
+    "dist"
+  ],
+  "scripts": {
+    "build": "rslib build",
+    "build:storybook": "storybook build",
+    "dev": "rslib build --watch",
+    "storybook": "storybook dev -p 6006",
+    "mf-dev": "rslib mf-dev"
+  },
+  "devDependencies": {
+    "@rsbuild/core": "1.2.0-beta.0",
+    "@rsbuild/plugin-react": "^1.1.0",
+    "@rslib/core": "^0.3.1",
+    "@storybook/addon-essentials": "^8.4.7",
+    "@storybook/addon-interactions": "^8.4.7",
+    "@storybook/addon-links": "^8.4.7",
+    "@storybook/addon-onboarding": "^8.4.7",
+    "@storybook/blocks": "^8.4.7",
+    "@storybook/react": "^8.4.7",
+    "@storybook/test": "^8.4.7",
+    "@types/react": "^19.0.4",
+    "react": "^19.0.0",
+    "react-dom": "^19.0.0",
+    "storybook": "^8.4.7",
+    "storybook-addon-rslib": "^0.1.7",
+    "storybook-react-rsbuild": "^0.1.7",
+    "typescript": "^5.7.3",
+    "@module-federation/rsbuild-plugin":"^0.8.9",
+    "@module-federation/storybook-addon":"^4.0.1"
+  },
+  "peerDependencies": {
+    "react": ">=16.9.0",
+    "react-dom": ">=16.9.0"
+  }
+}
diff --git a/packages/create-module-federation/templates/rsbuild-common/.gitignore b/packages/create-module-federation/templates/rsbuild-common/.gitignore
new file mode 100644
index 00000000000..38d7344c8ca
--- /dev/null
+++ b/packages/create-module-federation/templates/rsbuild-common/.gitignore
@@ -0,0 +1,13 @@
+# Local
+.DS_Store
+*.local
+*.log*
+
+# Dist
+node_modules
+dist/
+
+# IDE
+.vscode/*
+!.vscode/extensions.json
+.idea
diff --git a/packages/create-module-federation/templates/rsbuild-common/README.md b/packages/create-module-federation/templates/rsbuild-common/README.md
new file mode 100644
index 00000000000..37b1dd3328b
--- /dev/null
+++ b/packages/create-module-federation/templates/rsbuild-common/README.md
@@ -0,0 +1,29 @@
+# Rsbuild Project
+
+## Setup
+
+Install the dependencies:
+
+```bash
+pnpm install
+```
+
+## Get Started
+
+Start the dev server:
+
+```bash
+pnpm dev
+```
+
+Build the app for production:
+
+```bash
+pnpm build
+```
+
+Preview the production build locally:
+
+```bash
+pnpm preview
+```
diff --git a/packages/create-module-federation/templates/rsbuild-common/package.json.handlebars b/packages/create-module-federation/templates/rsbuild-common/package.json.handlebars
new file mode 100644
index 00000000000..5269bf06974
--- /dev/null
+++ b/packages/create-module-federation/templates/rsbuild-common/package.json.handlebars
@@ -0,0 +1,22 @@
+{
+  "name": "{{ mfName }}",
+  "private": true,
+  "version": "1.0.0",
+  "scripts": {
+    "dev": "rsbuild dev --open",
+    "build": "rsbuild build",
+    "preview": "rsbuild preview"
+  },
+  "dependencies": {
+    "react": "^19.0.0",
+    "react-dom": "^19.0.0"
+  },
+  "devDependencies": {
+    "@rsbuild/core": "^1.1.8",
+    "@rsbuild/plugin-react": "^1.0.7",
+    "@types/react": "^19.0.0",
+    "@types/react-dom": "^19.0.0",
+    "typescript": "^5.7.2",
+    "@module-federation/rsbuild-plugin":"^0.8.9"
+  }
+}
diff --git a/packages/create-module-federation/templates/rsbuild-common/public/.gitkeep b/packages/create-module-federation/templates/rsbuild-common/public/.gitkeep
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/packages/create-module-federation/templates/rsbuild-common/rsbuild.config.ts b/packages/create-module-federation/templates/rsbuild-common/rsbuild.config.ts
new file mode 100644
index 00000000000..b593e818429
--- /dev/null
+++ b/packages/create-module-federation/templates/rsbuild-common/rsbuild.config.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from '@rsbuild/core';
+import { pluginReact } from '@rsbuild/plugin-react';
+import { pluginModuleFederation } from '@module-federation/rsbuild-plugin';
+import moduleFederationConfig from './module-federation.config';
+
+export default defineConfig({
+  plugins: [pluginReact(), pluginModuleFederation(moduleFederationConfig)],
+});
diff --git a/packages/create-module-federation/templates/rsbuild-common/src/App.css b/packages/create-module-federation/templates/rsbuild-common/src/App.css
new file mode 100644
index 00000000000..93464a0bbd1
--- /dev/null
+++ b/packages/create-module-federation/templates/rsbuild-common/src/App.css
@@ -0,0 +1,15 @@
+body {
+  margin: 0;
+  color: #fff;
+  font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
+  background-image: linear-gradient(to bottom, #020917, #101725);
+}
+
+.content {
+  display: flex;
+  min-height: 100vh;
+  line-height: 1.1;
+  text-align: center;
+  flex-direction: column;
+  justify-content: center;
+}
diff --git a/packages/create-module-federation/templates/rsbuild-common/src/bootstrap.tsx b/packages/create-module-federation/templates/rsbuild-common/src/bootstrap.tsx
new file mode 100644
index 00000000000..55f29bff5c9
--- /dev/null
+++ b/packages/create-module-federation/templates/rsbuild-common/src/bootstrap.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+import App from './App';
+
+const rootEl = document.getElementById('root');
+if (rootEl) {
+  const root = ReactDOM.createRoot(rootEl);
+  root.render(
+    <React.StrictMode>
+      <App />
+    </React.StrictMode>,
+  );
+}
diff --git a/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.css b/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.css
new file mode 100644
index 00000000000..da68e5015ea
--- /dev/null
+++ b/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.css
@@ -0,0 +1,86 @@
+.component-inspector {
+  position: relative;
+  display: inline-block;
+}
+
+.inspector-info {
+  position: fixed;
+  z-index: 1000;
+  background: #1a1a1a;
+  padding: 4px 8px;
+  border-radius: 4px;
+  font-size: 12px;
+  color: #fff;
+  pointer-events: none;
+  display: flex;
+  align-items: center;
+  gap: 8px;
+}
+
+.inspector-overlay {
+  position: fixed;
+  border-radius: 4px;
+  pointer-events: none;
+  z-index: 999;
+  background:
+    linear-gradient(90deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 0,
+    linear-gradient(90deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 100%,
+    linear-gradient(0deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 0,
+    linear-gradient(0deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 100% 0;
+  background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
+  background-size:
+    200% 3px,
+    200% 3px,
+    3px 200%,
+    3px 200%; /* 将边框从 2px 加粗到 3px */
+  animation: borderRotate 4s linear infinite;
+}
+
+@keyframes borderRotate {
+  0% {
+    background-position:
+      0% 0,
+      0% 100%,
+      0 0%,
+      100% 0%;
+  }
+  100% {
+    background-position:
+      200% 0,
+      -200% 100%,
+      0 -200%,
+      100% 200%;
+  }
+}
+.mf-tag {
+  color: #646cff;
+  font-weight: 500;
+  position: relative;
+  padding-left: 16px;
+}
+
+.mf-tag::before {
+  content: '';
+  position: absolute;
+  left: 0;
+  top: 50%;
+  transform: translateY(-50%);
+  width: 12px;
+  height: 12px;
+  background-image: url('https://module-federation.io/svg.svg');
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: contain;
+}
+
+.divider {
+  color: #4a4a4a;
+}
+
+.gradient-text {
+  background: linear-gradient(90deg, #60a5fa, #ec4899);
+  -webkit-background-clip: text;
+  background-clip: text;
+  -webkit-text-fill-color: transparent;
+  font-weight: 500;
+}
diff --git a/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.tsx b/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.tsx
new file mode 100644
index 00000000000..50128edf471
--- /dev/null
+++ b/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.tsx
@@ -0,0 +1,68 @@
+import React, { useState } from 'react';
+import './ComponentInspector.css';
+
+interface InspectorInfo {
+  top: number;
+  left: number;
+  width: number;
+  height: number;
+}
+
+export const ComponentInspector: React.FC<{
+  children: React.ReactNode;
+  componentName: string;
+  mfName: string;
+}> = ({ children, componentName, mfName }) => {
+  const [inspectorInfo, setInspectorInfo] = useState<InspectorInfo | null>(
+    null,
+  );
+
+  const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {
+    const rect = e.currentTarget.getBoundingClientRect();
+    setInspectorInfo({
+      top: rect.top,
+      left: rect.left,
+      width: rect.width,
+      height: rect.height,
+    });
+  };
+
+  const handleMouseLeave = () => {
+    setInspectorInfo(null);
+  };
+
+  return (
+    <div
+      className="component-inspector"
+      onMouseEnter={handleMouseEnter}
+      onMouseLeave={handleMouseLeave}
+    >
+      {children}
+      {inspectorInfo && (
+        <>
+          <div
+            className="inspector-info"
+            style={{
+              top: `${inspectorInfo.top - 30}px`,
+              left: `${inspectorInfo.left}px`,
+              width: `${inspectorInfo.width}px`,
+            }}
+          >
+            <span className="mf-tag">{mfName}</span>
+            <span className="divider">|</span>
+            <span className="gradient-text">{componentName}</span>
+          </div>
+          <div
+            className="inspector-overlay"
+            style={{
+              top: `${inspectorInfo.top}px`,
+              left: `${inspectorInfo.left}px`,
+              width: `${inspectorInfo.width}px`,
+              height: `${inspectorInfo.height}px`,
+            }}
+          />
+        </>
+      )}
+    </div>
+  );
+};
diff --git a/packages/create-module-federation/templates/rsbuild-common/src/env.d.ts b/packages/create-module-federation/templates/rsbuild-common/src/env.d.ts
new file mode 100644
index 00000000000..b0ac762b091
--- /dev/null
+++ b/packages/create-module-federation/templates/rsbuild-common/src/env.d.ts
@@ -0,0 +1 @@
+/// <reference types="@rsbuild/core/types" />
diff --git a/packages/create-module-federation/templates/rsbuild-common/src/index.tsx b/packages/create-module-federation/templates/rsbuild-common/src/index.tsx
new file mode 100644
index 00000000000..b93c7a0268a
--- /dev/null
+++ b/packages/create-module-federation/templates/rsbuild-common/src/index.tsx
@@ -0,0 +1 @@
+import('./bootstrap');
diff --git a/packages/create-module-federation/templates/rsbuild-common/tsconfig.json b/packages/create-module-federation/templates/rsbuild-common/tsconfig.json
new file mode 100644
index 00000000000..9221337cd8f
--- /dev/null
+++ b/packages/create-module-federation/templates/rsbuild-common/tsconfig.json
@@ -0,0 +1,26 @@
+{
+  "compilerOptions": {
+    "lib": ["DOM", "ES2020"],
+    "jsx": "react-jsx",
+    "target": "ES2020",
+    "noEmit": true,
+    "skipLibCheck": true,
+    "useDefineForClassFields": true,
+
+    /* modules */
+    "module": "ESNext",
+    "isolatedModules": true,
+    "resolveJsonModule": true,
+    "moduleResolution": "Bundler",
+    "allowImportingTsExtensions": true,
+
+    /* type checking */
+    "strict": true,
+    "noUnusedLocals": true,
+    "noUnusedParameters": true,
+    "paths": {
+      "*": ["./@mf-types/*"]
+    }
+  },
+  "include": ["src"]
+}
diff --git a/packages/create-module-federation/tsconfig.json b/packages/create-module-federation/tsconfig.json
new file mode 100644
index 00000000000..2cd74a5bff2
--- /dev/null
+++ b/packages/create-module-federation/tsconfig.json
@@ -0,0 +1,30 @@
+{
+  "extends": "../../tsconfig.base.json",
+  "compilerOptions": {
+    "lib": ["DOM", "ESNext"],
+    "target": "ES2020",
+    "module": "Node16",
+    "forceConsistentCasingInFileNames": true,
+    "strict": true,
+    "noImplicitOverride": true,
+    "noPropertyAccessFromIndexSignature": true,
+    "noFallthroughCasesInSwitch": true,
+    "moduleResolution": "node16",
+    "resolveJsonModule": true,
+    "esModuleInterop": true,
+    "skipLibCheck": true,
+    "skipDefaultLibCheck": true,
+    "declaration": true,
+    "noImplicitReturns": false
+  },
+  "files": [],
+  "include": [],
+  "references": [
+    {
+      "path": "./tsconfig.lib.json"
+    },
+    {
+      "path": "./tsconfig.spec.json"
+    }
+  ]
+}
diff --git a/packages/create-module-federation/tsconfig.lib.json b/packages/create-module-federation/tsconfig.lib.json
new file mode 100644
index 00000000000..33eca2c2cdf
--- /dev/null
+++ b/packages/create-module-federation/tsconfig.lib.json
@@ -0,0 +1,10 @@
+{
+  "extends": "./tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../../dist/out-tsc",
+    "declaration": true,
+    "types": ["node"]
+  },
+  "include": ["src/**/*.ts"],
+  "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"]
+}
diff --git a/packages/create-module-federation/tsconfig.spec.json b/packages/create-module-federation/tsconfig.spec.json
new file mode 100644
index 00000000000..9b2a121d114
--- /dev/null
+++ b/packages/create-module-federation/tsconfig.spec.json
@@ -0,0 +1,14 @@
+{
+  "extends": "./tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../../dist/out-tsc",
+    "module": "commonjs",
+    "types": ["jest", "node"]
+  },
+  "include": [
+    "jest.config.ts",
+    "src/**/*.test.ts",
+    "src/**/*.spec.ts",
+    "src/**/*.d.ts"
+  ]
+}
diff --git a/packages/data-prefetch/tsconfig.json b/packages/data-prefetch/tsconfig.json
index fcf1b213e09..c047eec85c8 100644
--- a/packages/data-prefetch/tsconfig.json
+++ b/packages/data-prefetch/tsconfig.json
@@ -9,7 +9,6 @@
     "skipLibCheck": true,
     "moduleResolution": "node",
     "allowJs": false,
-    "strict": true,
     "types": ["jest", "node"],
     "experimentalDecorators": true,
     "resolveJsonModule": true,
diff --git a/packages/rsbuild-plugin/src/cli/index.ts b/packages/rsbuild-plugin/src/cli/index.ts
index 04d6454a5ae..5c92dd39834 100644
--- a/packages/rsbuild-plugin/src/cli/index.ts
+++ b/packages/rsbuild-plugin/src/cli/index.ts
@@ -12,7 +12,7 @@ import type {
   moduleFederationPlugin,
   sharePlugin,
 } from '@module-federation/sdk';
-import type { RsbuildPlugin, Rspack } from '@rsbuild/core';
+import type { RsbuildConfig, RsbuildPlugin, Rspack } from '@rsbuild/core';
 import logger from '../logger';
 
 type ModuleFederationOptions =
@@ -32,6 +32,17 @@ export {
 
 const LIB_FORMAT = ['commonjs', 'umd', 'modern-module'];
 
+function isStoryBook(rsbuildConfig: RsbuildConfig) {
+  if (
+    rsbuildConfig.plugins?.find(
+      (p) =>
+        p && 'name' in p && p.name === 'module-federation-storybook-plugin',
+    )
+  ) {
+    return true;
+  }
+}
+
 export function isMFFormat(bundlerConfig: Rspack.Configuration) {
   const library = bundlerConfig.output?.library;
 
@@ -78,6 +89,8 @@ export const pluginModuleFederation = (
       bundlerConfigs.forEach((bundlerConfig) => {
         if (!isMFFormat(bundlerConfig)) {
           return;
+        } else if (isStoryBook(api.getRsbuildConfig())) {
+          bundlerConfig.output!.uniqueName = `${moduleFederationOptions.name}-storybook-host`;
         } else {
           // mf
           autoDeleteSplitChunkCacheGroups(
@@ -156,6 +169,10 @@ export const pluginModuleFederation = (
 
     // dev config only works on format: 'mf'
     api.modifyRsbuildConfig((config) => {
+      // skip storybook
+      if (isStoryBook(config)) {
+        return;
+      }
       // Change some default configs for remote modules
       if (moduleFederationOptions.exposes) {
         config.dev ||= {};
@@ -192,3 +209,5 @@ export const pluginModuleFederation = (
     });
   },
 });
+
+export { createModuleFederationConfig } from '@module-federation/enhanced';
diff --git a/packages/runtime-plugins/inject-external-runtime-core-plugin/tsconfig.json b/packages/runtime-plugins/inject-external-runtime-core-plugin/tsconfig.json
index bb69d249599..c45d1f4d3b0 100644
--- a/packages/runtime-plugins/inject-external-runtime-core-plugin/tsconfig.json
+++ b/packages/runtime-plugins/inject-external-runtime-core-plugin/tsconfig.json
@@ -3,7 +3,6 @@
   "compilerOptions": {
     "module": "commonjs",
     "forceConsistentCasingInFileNames": true,
-    "strict": true,
     "noImplicitOverride": true,
     "noPropertyAccessFromIndexSignature": true,
     "noImplicitReturns": true,
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index faa01cc23b7..dcca158a4fb 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -2040,6 +2040,46 @@ importers:
         specifier: ^5.40.0
         version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)
 
+  packages/create-module-federation:
+    dependencies:
+      '@clack/prompts':
+        specifier: ^0.8.2
+        version: 0.8.2
+      execa:
+        specifier: 5.1.1
+        version: 5.1.1
+      fs-extra:
+        specifier: 9.1.0
+        version: 9.1.0
+      glob:
+        specifier: 7.2.0
+        version: 7.2.0
+      handlebars:
+        specifier: 4.7.7
+        version: 4.7.7
+      minimist:
+        specifier: ^1.2.8
+        version: 1.2.8
+      rslog:
+        specifier: ^1.2.3
+        version: 1.2.3
+    devDependencies:
+      '@rslib/core':
+        specifier: ^0.3.1
+        version: 0.3.2(typescript@5.5.2)
+      '@types/fs-extra':
+        specifier: 9.0.6
+        version: 9.0.6
+      '@types/glob':
+        specifier: 7.2.0
+        version: 7.2.0
+      '@types/minimist':
+        specifier: ^1.2.5
+        version: 1.2.5
+      rsbuild-plugin-publint:
+        specifier: ^0.2.1
+        version: 0.2.1(@rsbuild/core@1.2.0-beta.1)
+
   packages/data-prefetch:
     dependencies:
       '@module-federation/runtime':
@@ -2969,10 +3009,10 @@ packages:
       '@babel/helpers': 7.26.0
       '@babel/parser': 7.26.2
       '@babel/template': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
       convert-source-map: 1.9.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       gensync: 1.0.0-beta.2
       json5: 2.2.3
       lodash: 4.17.21
@@ -2998,7 +3038,7 @@ packages:
       '@babel/traverse': 7.25.7
       '@babel/types': 7.25.7
       convert-source-map: 2.0.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       gensync: 1.0.0-beta.2
       json5: 2.2.3
       semver: 6.3.1
@@ -3017,10 +3057,10 @@ packages:
       '@babel/helpers': 7.26.0
       '@babel/parser': 7.26.2
       '@babel/template': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
       convert-source-map: 2.0.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       gensync: 1.0.0-beta.2
       json5: 2.2.3
       semver: 6.3.1
@@ -3040,10 +3080,10 @@ packages:
       '@babel/helpers': 7.26.0
       '@babel/parser': 7.26.2
       '@babel/template': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
       convert-source-map: 2.0.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       gensync: 1.0.0-beta.2
       json5: 2.2.3
       semver: 6.3.1
@@ -3063,10 +3103,10 @@ packages:
       '@babel/helpers': 7.26.0
       '@babel/parser': 7.26.2
       '@babel/template': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
       convert-source-map: 2.0.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       gensync: 1.0.0-beta.2
       json5: 2.2.3
       semver: 6.3.1
@@ -3154,7 +3194,7 @@ packages:
     resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
     transitivePeerDependencies:
       - supports-color
@@ -3191,7 +3231,7 @@ packages:
       '@babel/helper-optimise-call-expression': 7.25.7
       '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.2)
       '@babel/helper-skip-transparent-expression-wrappers': 7.25.7
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       semver: 6.3.1
     transitivePeerDependencies:
       - supports-color
@@ -3209,7 +3249,7 @@ packages:
       '@babel/helper-optimise-call-expression': 7.25.7
       '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.7)
       '@babel/helper-skip-transparent-expression-wrappers': 7.25.7
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       semver: 6.3.1
     transitivePeerDependencies:
       - supports-color
@@ -3227,7 +3267,7 @@ packages:
       '@babel/helper-optimise-call-expression': 7.25.7
       '@babel/helper-replace-supers': 7.25.7(@babel/core@7.26.0)
       '@babel/helper-skip-transparent-expression-wrappers': 7.25.7
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       semver: 6.3.1
     transitivePeerDependencies:
       - supports-color
@@ -3244,7 +3284,7 @@ packages:
       '@babel/helper-optimise-call-expression': 7.25.9
       '@babel/helper-replace-supers': 7.25.9(@babel/core@7.25.7)
       '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       semver: 6.3.1
     transitivePeerDependencies:
       - supports-color
@@ -3262,7 +3302,7 @@ packages:
       '@babel/helper-optimise-call-expression': 7.25.9
       '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0)
       '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       semver: 6.3.1
     transitivePeerDependencies:
       - supports-color
@@ -3321,7 +3361,7 @@ packages:
       '@babel/core': 7.25.7
       '@babel/helper-compilation-targets': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       lodash.debounce: 4.0.8
       resolve: 1.22.8
     transitivePeerDependencies:
@@ -3336,7 +3376,7 @@ packages:
       '@babel/core': 7.26.0
       '@babel/helper-compilation-targets': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       lodash.debounce: 4.0.8
       resolve: 1.22.8
     transitivePeerDependencies:
@@ -3346,7 +3386,7 @@ packages:
     resolution: {integrity: sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
     transitivePeerDependencies:
       - supports-color
@@ -3355,7 +3395,7 @@ packages:
     resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
     transitivePeerDependencies:
       - supports-color
@@ -3364,7 +3404,16 @@ packages:
     resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
+      '@babel/types': 7.26.0
+    transitivePeerDependencies:
+      - supports-color
+
+  /@babel/helper-module-imports@7.25.9:
+    resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
     transitivePeerDependencies:
       - supports-color
@@ -3388,7 +3437,7 @@ packages:
       '@babel/helper-module-imports': 7.25.7
       '@babel/helper-simple-access': 7.24.7
       '@babel/helper-validator-identifier': 7.24.7
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
 
@@ -3399,9 +3448,9 @@ packages:
       '@babel/core': ^7.0.0
     dependencies:
       '@babel/core': 7.12.9
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-validator-identifier': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3413,9 +3462,9 @@ packages:
       '@babel/core': ^7.0.0
     dependencies:
       '@babel/core': 7.25.7
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-validator-identifier': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3427,9 +3476,9 @@ packages:
       '@babel/core': ^7.0.0
     dependencies:
       '@babel/core': 7.25.8
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-validator-identifier': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3441,9 +3490,9 @@ packages:
       '@babel/core': ^7.0.0
     dependencies:
       '@babel/core': 7.26.0
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-validator-identifier': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
 
@@ -3476,7 +3525,7 @@ packages:
       '@babel/core': 7.25.7
       '@babel/helper-annotate-as-pure': 7.25.9
       '@babel/helper-wrap-function': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3490,7 +3539,7 @@ packages:
       '@babel/core': 7.26.0
       '@babel/helper-annotate-as-pure': 7.25.9
       '@babel/helper-wrap-function': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
 
@@ -3503,7 +3552,7 @@ packages:
       '@babel/core': 7.25.2
       '@babel/helper-member-expression-to-functions': 7.25.7
       '@babel/helper-optimise-call-expression': 7.25.7
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3517,7 +3566,7 @@ packages:
       '@babel/core': 7.25.7
       '@babel/helper-member-expression-to-functions': 7.25.7
       '@babel/helper-optimise-call-expression': 7.25.7
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3531,7 +3580,7 @@ packages:
       '@babel/core': 7.26.0
       '@babel/helper-member-expression-to-functions': 7.25.7
       '@babel/helper-optimise-call-expression': 7.25.7
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
 
@@ -3544,7 +3593,7 @@ packages:
       '@babel/core': 7.25.7
       '@babel/helper-member-expression-to-functions': 7.25.9
       '@babel/helper-optimise-call-expression': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3558,7 +3607,7 @@ packages:
       '@babel/core': 7.26.0
       '@babel/helper-member-expression-to-functions': 7.25.9
       '@babel/helper-optimise-call-expression': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
 
@@ -3566,7 +3615,7 @@ packages:
     resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
     transitivePeerDependencies:
       - supports-color
@@ -3575,7 +3624,7 @@ packages:
     resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
     transitivePeerDependencies:
       - supports-color
@@ -3585,7 +3634,7 @@ packages:
     resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
     transitivePeerDependencies:
       - supports-color
@@ -3594,7 +3643,7 @@ packages:
     resolution: {integrity: sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
     transitivePeerDependencies:
       - supports-color
@@ -3603,7 +3652,7 @@ packages:
     resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
     transitivePeerDependencies:
       - supports-color
@@ -3641,7 +3690,7 @@ packages:
     engines: {node: '>=6.9.0'}
     dependencies:
       '@babel/template': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
     transitivePeerDependencies:
       - supports-color
@@ -3708,7 +3757,7 @@ packages:
     dependencies:
       '@babel/core': 7.25.7
       '@babel/helper-plugin-utils': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3721,7 +3770,7 @@ packages:
     dependencies:
       '@babel/core': 7.26.0
       '@babel/helper-plugin-utils': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
 
@@ -3798,7 +3847,7 @@ packages:
     dependencies:
       '@babel/core': 7.25.7
       '@babel/helper-plugin-utils': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3811,7 +3860,7 @@ packages:
     dependencies:
       '@babel/core': 7.26.0
       '@babel/helper-plugin-utils': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
 
@@ -4547,7 +4596,7 @@ packages:
       '@babel/core': 7.25.7
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.25.7)
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -4561,7 +4610,7 @@ packages:
       '@babel/core': 7.26.0
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0)
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
 
@@ -4572,7 +4621,7 @@ packages:
       '@babel/core': ^7.0.0-0
     dependencies:
       '@babel/core': 7.25.7
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.25.7)
     transitivePeerDependencies:
@@ -4586,7 +4635,7 @@ packages:
       '@babel/core': ^7.0.0-0
     dependencies:
       '@babel/core': 7.26.0
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0)
     transitivePeerDependencies:
@@ -4704,7 +4753,7 @@ packages:
       '@babel/helper-compilation-targets': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/helper-replace-supers': 7.25.9(@babel/core@7.25.7)
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       globals: 11.12.0
     transitivePeerDependencies:
       - supports-color
@@ -4721,7 +4770,7 @@ packages:
       '@babel/helper-compilation-targets': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0)
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       globals: 11.12.0
     transitivePeerDependencies:
       - supports-color
@@ -4946,7 +4995,7 @@ packages:
       '@babel/core': 7.25.7
       '@babel/helper-compilation-targets': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -4960,7 +5009,7 @@ packages:
       '@babel/core': 7.26.0
       '@babel/helper-compilation-targets': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
 
@@ -5116,7 +5165,7 @@ packages:
       '@babel/helper-module-transforms': 7.26.0(@babel/core@7.25.7)
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/helper-validator-identifier': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -5131,7 +5180,7 @@ packages:
       '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/helper-validator-identifier': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
 
@@ -5623,7 +5672,7 @@ packages:
     dependencies:
       '@babel/core': 7.25.2
       '@babel/helper-annotate-as-pure': 7.25.9
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.25.2)
       '@babel/types': 7.26.0
@@ -5639,7 +5688,7 @@ packages:
     dependencies:
       '@babel/core': 7.25.7
       '@babel/helper-annotate-as-pure': 7.25.9
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.25.7)
       '@babel/types': 7.26.0
@@ -5655,7 +5704,7 @@ packages:
     dependencies:
       '@babel/core': 7.25.8
       '@babel/helper-annotate-as-pure': 7.25.9
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.25.8)
       '@babel/types': 7.26.0
@@ -5671,7 +5720,7 @@ packages:
     dependencies:
       '@babel/core': 7.26.0
       '@babel/helper-annotate-as-pure': 7.25.9
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
       '@babel/types': 7.26.0
@@ -5789,7 +5838,7 @@ packages:
       '@babel/core': ^7.0.0-0
     dependencies:
       '@babel/core': 7.25.7
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.7)
       babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.7)
@@ -5806,7 +5855,7 @@ packages:
       '@babel/core': ^7.0.0-0
     dependencies:
       '@babel/core': 7.26.0
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0)
       babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0)
@@ -6400,7 +6449,21 @@ packages:
       '@babel/parser': 7.26.2
       '@babel/template': 7.25.9
       '@babel/types': 7.26.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
+      globals: 11.12.0
+    transitivePeerDependencies:
+      - supports-color
+
+  /@babel/traverse@7.25.9:
+    resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/code-frame': 7.26.2
+      '@babel/generator': 7.26.2
+      '@babel/parser': 7.26.2
+      '@babel/template': 7.25.9
+      '@babel/types': 7.26.0
+      debug: 4.3.7(supports-color@9.3.1)
       globals: 11.12.0
     transitivePeerDependencies:
       - supports-color
@@ -6704,6 +6767,21 @@ packages:
       - react
     dev: true
 
+  /@clack/core@0.3.5:
+    resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==}
+    dependencies:
+      picocolors: 1.1.1
+      sisteransi: 1.0.5
+    dev: false
+
+  /@clack/prompts@0.8.2:
+    resolution: {integrity: sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==}
+    dependencies:
+      '@clack/core': 0.3.5
+      picocolors: 1.1.1
+      sisteransi: 1.0.5
+    dev: false
+
   /@colors/colors@1.5.0:
     resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
     engines: {node: '>=0.1.90'}
@@ -7043,7 +7121,7 @@ packages:
   /@emotion/babel-plugin@11.12.0:
     resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==}
     dependencies:
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/runtime': 7.26.0
       '@emotion/hash': 0.9.2
       '@emotion/memoize': 0.9.0
@@ -8589,7 +8667,7 @@ packages:
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     dependencies:
       ajv: 6.12.6
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       espree: 9.6.1
       globals: 13.24.0
       ignore: 5.3.2
@@ -8665,7 +8743,7 @@ packages:
     deprecated: Use @eslint/config-array instead
     dependencies:
       '@humanwhocodes/object-schema': 2.0.3
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       minimatch: 3.1.2
     transitivePeerDependencies:
       - supports-color
@@ -9017,7 +9095,7 @@ packages:
       chalk: 4.1.2
       collect-v8-coverage: 1.0.2
       exit: 0.1.2
-      glob: 7.2.3
+      glob: 7.2.0
       graceful-fs: 4.2.11
       istanbul-lib-coverage: 3.2.2
       istanbul-lib-instrument: 6.0.3
@@ -11229,6 +11307,10 @@ packages:
     resolution: {integrity: sha512-c38UWAIeK7n7MihCD4fnvD7/Bdh6G2jCwyF+bzold8BYFmId/ck2+tvRoX7qX6qeftWJr61PBfJceffozujG0w==}
     dev: true
 
+  /@module-federation/error-codes@0.8.4:
+    resolution: {integrity: sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==}
+    dev: true
+
   /@module-federation/managers@0.6.11:
     resolution: {integrity: sha512-HVw9eFTHCegRlWSmNbHXAnY19XHSj19RHHpjZ1Oo71DaHgjJAPJlg4izifcdWt0w+ObAQLOH1DacjYKMIT4W6Q==}
     dependencies:
@@ -11512,6 +11594,13 @@ packages:
       '@module-federation/webpack-bundler-runtime': 0.7.7
     dev: true
 
+  /@module-federation/runtime-tools@0.8.4:
+    resolution: {integrity: sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==}
+    dependencies:
+      '@module-federation/runtime': 0.8.4
+      '@module-federation/webpack-bundler-runtime': 0.8.4
+    dev: true
+
   /@module-federation/runtime@0.0.8:
     resolution: {integrity: sha512-Hi9g10aHxHdQ7CbchSvke07YegYwkf162XPOmixNmJr5Oy4wVa2d9yIVSrsWFhBRbbvM5iJP6GrSuEq6HFO3ug==}
     dependencies:
@@ -11554,6 +11643,13 @@ packages:
       '@module-federation/sdk': 0.7.7
     dev: true
 
+  /@module-federation/runtime@0.8.4:
+    resolution: {integrity: sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==}
+    dependencies:
+      '@module-federation/error-codes': 0.8.4
+      '@module-federation/sdk': 0.8.4
+    dev: true
+
   /@module-federation/sdk@0.0.8:
     resolution: {integrity: sha512-lkasywBItjUTNT0T0IskonDE2E/2tXE9UhUCPVoDL3NteDUSFGg4tpkF+cey1pD8mHh0XJcGrCuOW7s96peeAg==}
     dev: true
@@ -11584,6 +11680,12 @@ packages:
       isomorphic-rslog: 0.0.6
     dev: true
 
+  /@module-federation/sdk@0.8.4:
+    resolution: {integrity: sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==}
+    dependencies:
+      isomorphic-rslog: 0.0.6
+    dev: true
+
   /@module-federation/third-party-dts-extractor@0.6.11:
     resolution: {integrity: sha512-KEHF71/qmEhME1XK/0XpMHKaSRjwmINpul9iu5Z4UBNtoMIydq6SH41DsWF3HxAManhqe+ZwCxyoSn2Yxm5d0Q==}
     dependencies:
@@ -11684,6 +11786,13 @@ packages:
       '@module-federation/sdk': 0.7.7
     dev: true
 
+  /@module-federation/webpack-bundler-runtime@0.8.4:
+    resolution: {integrity: sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==}
+    dependencies:
+      '@module-federation/runtime': 0.8.4
+      '@module-federation/sdk': 0.8.4
+    dev: true
+
   /@mole-inc/bin-wrapper@8.0.1:
     resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==}
     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -11713,7 +11822,7 @@ packages:
       '@open-draft/until': 1.0.3
       '@types/debug': 4.1.12
       '@xmldom/xmldom': 0.8.10
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       headers-polyfill: 3.2.5
       outvariant: 1.4.3
       strict-event-emitter: 0.2.8
@@ -14762,7 +14871,7 @@ packages:
         optional: true
     dependencies:
       '@babel/core': 7.25.2
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@rollup/pluginutils': 5.1.3(rollup@4.24.0)
       rollup: 4.24.0
     transitivePeerDependencies:
@@ -14778,7 +14887,7 @@ packages:
       '@rollup/pluginutils': 3.1.0(rollup@2.79.2)
       commondir: 1.0.1
       estree-walker: 2.0.2
-      glob: 7.2.3
+      glob: 7.2.0
       is-reference: 1.2.1
       magic-string: 0.25.9
       resolve: 1.22.8
@@ -14799,7 +14908,7 @@ packages:
       estree-walker: 2.0.2
       glob: 8.1.0
       is-reference: 1.2.1
-      magic-string: 0.30.12
+      magic-string: 0.30.17
       rollup: 4.24.0
     dev: true
 
@@ -15321,6 +15430,17 @@ packages:
       core-js: 3.39.0
     dev: true
 
+  /@rsbuild/core@1.2.0-beta.1:
+    resolution: {integrity: sha512-+TzwALD2xEpgc2FQgjn1CtNtE2CTS1FELuWXpjI4AABjytYDGdaOHvHyCLXHiJpuvDdnyJumoN/T8i8zhbTkPg==}
+    engines: {node: '>=16.7.0'}
+    hasBin: true
+    dependencies:
+      '@rspack/core': 1.2.0-beta.0(@swc/helpers@0.5.15)
+      '@rspack/lite-tapable': 1.0.1
+      '@swc/helpers': 0.5.15
+      core-js: 3.40.0
+    dev: true
+
   /@rsbuild/plugin-assets-retry@1.0.2(@rsbuild/core@1.0.19):
     resolution: {integrity: sha512-vlQwCFibONxquQmQwDDv/crivmXAct8nsUtSovlgoMHE4UUQKFZbJ7jr54FVXvDlyL/Wp9yvOj4WhAEabBEVlA==}
     peerDependencies:
@@ -15899,6 +16019,25 @@ packages:
       typescript: 5.5.2
     dev: true
 
+  /@rslib/core@0.3.2(typescript@5.5.2):
+    resolution: {integrity: sha512-BdR/1kjR+Jk614je0ijjEwGoY44fLtPg6PoWHoKfzMkqNMtFg40AwMaBS04SylvR4BuUt1Q+9k6NQ/IWdE5HWg==}
+    engines: {node: '>=16.0.0'}
+    hasBin: true
+    peerDependencies:
+      '@microsoft/api-extractor': ^7
+      typescript: ^5
+    peerDependenciesMeta:
+      '@microsoft/api-extractor':
+        optional: true
+      typescript:
+        optional: true
+    dependencies:
+      '@rsbuild/core': 1.2.0-beta.1
+      rsbuild-plugin-dts: 0.3.2(@rsbuild/core@1.2.0-beta.1)(typescript@5.5.2)
+      tinyglobby: 0.2.10
+      typescript: 5.5.2
+    dev: true
+
   /@rspack/binding-darwin-arm64@0.5.0:
     resolution: {integrity: sha512-zRx4efhn2eCjdhHt6avhdkKur6FZvYy1TgPhNKpWbTg7fnrvtNGzcVQCAOnPUUPkJjnss3veOhZlWJ3paX0EDQ==}
     cpu: [arm64]
@@ -15953,6 +16092,14 @@ packages:
     dev: true
     optional: true
 
+  /@rspack/binding-darwin-arm64@1.2.0-beta.0:
+    resolution: {integrity: sha512-g8NgY4OIjZf5LabAKOHNr2rs/WzVaxXpOSVsdHztQL6ETdeEpIPUul4p/5zivFNcrvJxVVeHzKJHyB5lqxDcTA==}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
   /@rspack/binding-darwin-x64@0.5.0:
     resolution: {integrity: sha512-d6SvBURfKow3WcKxTrjJPBkp+NLsuCPoIMaS8/bM4gHwgjVs2zuOsTQ9+l36dypOkjnu6QLkOIykTdiUKJ0eQg==}
     cpu: [x64]
@@ -16007,6 +16154,14 @@ packages:
     dev: true
     optional: true
 
+  /@rspack/binding-darwin-x64@1.2.0-beta.0:
+    resolution: {integrity: sha512-+BH/1UpG96exJc6KhDOiSHAb05bUwxbYCd37HAJwcLxQgB7IEmPtBYvV5CtHysteM5NBtbNeeAcyXK+dIYvUew==}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
   /@rspack/binding-linux-arm64-gnu@0.5.0:
     resolution: {integrity: sha512-97xFbF7RjJc2VvX+0Hvb7Jzsk+eEE8oEUcc5Dnb7OIwGZulWKk6cLNcRkNfmL/F9kk1QEKlUTNC/VQI7ljf2tA==}
     cpu: [arm64]
@@ -16061,6 +16216,14 @@ packages:
     dev: true
     optional: true
 
+  /@rspack/binding-linux-arm64-gnu@1.2.0-beta.0:
+    resolution: {integrity: sha512-LdIBNy5WAXJ1J9nB3bEyvqz7mJrMN/7cCtPHMmFBR1aTFbh1NAjYZl24fc+f59aSV5jAU9wfTrOtqtSwnXg4tQ==}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
   /@rspack/binding-linux-arm64-musl@0.5.0:
     resolution: {integrity: sha512-lk0IomCy276EoynmksoBwg0IcHvvVXuZPMeq7OgRPTvs33mdTExSzSTPtrGzx/D00bX1ybUqLQwJhcgGt6erPQ==}
     cpu: [arm64]
@@ -16115,6 +16278,14 @@ packages:
     dev: true
     optional: true
 
+  /@rspack/binding-linux-arm64-musl@1.2.0-beta.0:
+    resolution: {integrity: sha512-4tRi87UyEWV25X6Ul68kJJ/de/cwmASmrIUrCYmdWEdtWMN46UOz0OvxCYvcHTf0DCP8M1CZf0cSiRuG/hsxGA==}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
   /@rspack/binding-linux-x64-gnu@0.5.0:
     resolution: {integrity: sha512-r15ddpse0S/8wHtfL85uJrVotvPVIMnQX06KlXyGUSw1jWrjxV+NXFDJ4xXnHCvk/YV6lCFTotAssk4wJEE0Fw==}
     cpu: [x64]
@@ -16169,6 +16340,14 @@ packages:
     dev: true
     optional: true
 
+  /@rspack/binding-linux-x64-gnu@1.2.0-beta.0:
+    resolution: {integrity: sha512-rWWrPwUH3V4yG46acZDIlqr7H/yCxbu+WdPhdIRBvgT7bisQkZa2HYx6MXmUXxx94U2iFy5bh+un0ho5FZOeCg==}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
   /@rspack/binding-linux-x64-musl@0.5.0:
     resolution: {integrity: sha512-lB9Dn1bi4xyzEe6Bf/GQ7Ktlrq4Kmt1LHwN+t0m6iVYH3Vb/3g8uQGDSkwnjP8NmlAtldK1cmvRMhR7flUrgZA==}
     cpu: [x64]
@@ -16223,6 +16402,14 @@ packages:
     dev: true
     optional: true
 
+  /@rspack/binding-linux-x64-musl@1.2.0-beta.0:
+    resolution: {integrity: sha512-9pgL17Bk8aSrTBx6VfQbb313RInDjlY9DfgV5ybbSsWaFs/oAs4oPy+kepWWixfb9Y2q/74bSBPrBNTBYQpknw==}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
   /@rspack/binding-win32-arm64-msvc@0.5.0:
     resolution: {integrity: sha512-aDoF13puU8LxST/qKZndtXzlJbnbnxY2Bxyj0fu7UDh8nHJD4A2HQfWRN6BZFHaVSqM6Bnli410dJrIWeTNhZQ==}
     cpu: [arm64]
@@ -16277,6 +16464,14 @@ packages:
     dev: true
     optional: true
 
+  /@rspack/binding-win32-arm64-msvc@1.2.0-beta.0:
+    resolution: {integrity: sha512-JQ06Q3uTclIk4AvKUqx0Royx2PqVcUuumEUFVWERbd01fntkQqI3RFrPazBYAIvk5JmXk40+CKA1CsFef4RKOA==}
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
   /@rspack/binding-win32-ia32-msvc@0.5.0:
     resolution: {integrity: sha512-EYGeH4YKX5v4gtTL8mBAWnsKSkF+clsKu0z1hgWgSV/vnntNlqJQZUCb5CMdg5VqadNm+lUNDYYHeHNa3+Jp3w==}
     cpu: [ia32]
@@ -16331,6 +16526,14 @@ packages:
     dev: true
     optional: true
 
+  /@rspack/binding-win32-ia32-msvc@1.2.0-beta.0:
+    resolution: {integrity: sha512-rNz/sXjXLAqCZkDuTumqm9Aa47Hiu45+vkJ0XvbirJ0A+dzuyGjdtlinwLyZtCY+dVAlS+AcX5znJLlpTSnjjA==}
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
   /@rspack/binding-win32-x64-msvc@0.5.0:
     resolution: {integrity: sha512-RCECFW6otUrFiPbWQyOvLZOMNV/OL6AyAKMDbX9ejjk0TjLMrHjnhmI5X8EoA/SUc1/vEbgsJzDVLKTfn138cg==}
     cpu: [x64]
@@ -16385,6 +16588,14 @@ packages:
     dev: true
     optional: true
 
+  /@rspack/binding-win32-x64-msvc@1.2.0-beta.0:
+    resolution: {integrity: sha512-LKFcgaeEo7G6YLE5aKIbeWzXUpVZc02u0q4as0TjTTRBHd8r21GeaGJVh1Xm9YBkHpIX8Ho1DMftYVd+F6gHzw==}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
   /@rspack/binding@0.5.0:
     resolution: {integrity: sha512-+v1elZMn6lKBqbXQzhcfeCaPzztFNGEkNDEcQ7weako6yQPsBihGCRzveMMzZkja4RyB9GRHjWRE+THm8V8+3w==}
     optionalDependencies:
@@ -16481,6 +16692,20 @@ packages:
       '@rspack/binding-win32-x64-msvc': 1.1.8
     dev: true
 
+  /@rspack/binding@1.2.0-beta.0:
+    resolution: {integrity: sha512-ZUBWVKCVC3uunZhjH7FAVLP83r/6QvPmYViA6n0JF3ycBmcJLkHJb26v42j6d5EfYfTtNvfRUlzHckIkFDQeDQ==}
+    optionalDependencies:
+      '@rspack/binding-darwin-arm64': 1.2.0-beta.0
+      '@rspack/binding-darwin-x64': 1.2.0-beta.0
+      '@rspack/binding-linux-arm64-gnu': 1.2.0-beta.0
+      '@rspack/binding-linux-arm64-musl': 1.2.0-beta.0
+      '@rspack/binding-linux-x64-gnu': 1.2.0-beta.0
+      '@rspack/binding-linux-x64-musl': 1.2.0-beta.0
+      '@rspack/binding-win32-arm64-msvc': 1.2.0-beta.0
+      '@rspack/binding-win32-ia32-msvc': 1.2.0-beta.0
+      '@rspack/binding-win32-x64-msvc': 1.2.0-beta.0
+    dev: true
+
   /@rspack/core@0.5.0(@swc/helpers@0.5.3):
     resolution: {integrity: sha512-/Bpujdtx28qYir7AK9VVSbY35GBFEcZ1NTJZBx/WIzZGZWLCxhlVYfjH8cj44y4RvXa0Y26tnj/q7VJ4U3sHug==}
     engines: {node: '>=16.0.0'}
@@ -16628,6 +16853,22 @@ packages:
       caniuse-lite: 1.0.30001668
     dev: true
 
+  /@rspack/core@1.2.0-beta.0(@swc/helpers@0.5.15):
+    resolution: {integrity: sha512-0o0EYNeCwbRrh1l+P6HEKGS3Y+SVE/+J6SqDGGBsOixt/YzFeYNeaePWUnFfQ8a27jp9s//Ix6iuxMYGjWmitA==}
+    engines: {node: '>=16.0.0'}
+    peerDependencies:
+      '@swc/helpers': '>=0.5.1'
+    peerDependenciesMeta:
+      '@swc/helpers':
+        optional: true
+    dependencies:
+      '@module-federation/runtime-tools': 0.8.4
+      '@rspack/binding': 1.2.0-beta.0
+      '@rspack/lite-tapable': 1.0.1
+      '@swc/helpers': 0.5.15
+      caniuse-lite: 1.0.30001668
+    dev: true
+
   /@rspack/dev-server@1.0.9(@rspack/core@1.0.8)(@types/express@4.17.21)(webpack@5.93.0):
     resolution: {integrity: sha512-VF+apLFfl5LWIhVbfkJ5ccU0Atl5mi+sGTkx+XtE1tbUmMJkde0nm/4+eaQCud7oGl+ZCzt4kW14uuzLSiEGDw==}
     peerDependencies:
@@ -17062,7 +17303,7 @@ packages:
       conventional-changelog-writer: 8.0.0
       conventional-commits-filter: 5.0.0
       conventional-commits-parser: 6.0.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       import-from-esm: 1.3.4
       lodash-es: 4.17.21
       micromatch: 4.0.8
@@ -17089,7 +17330,7 @@ packages:
     dependencies:
       '@semantic-release/error': 3.0.0
       aggregate-error: 3.1.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       execa: 5.1.1
       lodash: 4.17.21
       parse-json: 5.2.0
@@ -17106,7 +17347,7 @@ packages:
     dependencies:
       '@semantic-release/error': 3.0.0
       aggregate-error: 3.1.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       dir-glob: 3.0.1
       execa: 5.1.1
       lodash: 4.17.21
@@ -17129,7 +17370,7 @@ packages:
       '@octokit/plugin-throttling': 9.3.1(@octokit/core@6.1.2)
       '@semantic-release/error': 4.0.0
       aggregate-error: 5.0.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       dir-glob: 3.0.1
       globby: 14.0.2
       http-proxy-agent: 7.0.2
@@ -17198,7 +17439,7 @@ packages:
       conventional-changelog-writer: 8.0.0
       conventional-commits-filter: 5.0.0
       conventional-commits-parser: 6.0.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       get-stream: 7.0.1
       import-from-esm: 1.3.4
       into-stream: 7.0.0
@@ -17675,7 +17916,7 @@ packages:
       fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.5.2)(webpack@5.93.0)
       fs-extra: 11.2.0
       html-webpack-plugin: 5.6.2(@rspack/core@1.0.8)(webpack@5.93.0)
-      magic-string: 0.30.12
+      magic-string: 0.30.17
       path-browserify: 1.0.1
       process: 0.11.10
       semver: 7.6.3
@@ -17869,7 +18110,7 @@ packages:
       find-up: 5.0.0
       fs-extra: 11.2.0
       glob: 10.4.5
-      handlebars: 4.7.8
+      handlebars: 4.7.7
       lazy-universal-dotenv: 4.0.0
       node-fetch: 2.7.0(encoding@0.1.13)
       picomatch: 2.3.1
@@ -17906,7 +18147,7 @@ packages:
       find-up: 5.0.0
       fs-extra: 11.2.0
       glob: 10.4.5
-      handlebars: 4.7.8
+      handlebars: 4.7.7
       lazy-universal-dotenv: 4.0.0
       node-fetch: 2.7.0(encoding@0.1.13)
       picomatch: 2.3.1
@@ -18137,7 +18378,7 @@ packages:
     dependencies:
       '@babel/generator': 7.26.2
       '@babel/parser': 7.26.2
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
       '@storybook/csf': 0.1.11
       '@storybook/types': 7.6.20
@@ -18153,7 +18394,7 @@ packages:
     dependencies:
       '@babel/generator': 7.26.2
       '@babel/parser': 7.26.2
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
       '@storybook/csf': 0.1.11
       '@storybook/types': 8.1.11
@@ -18368,7 +18609,7 @@ packages:
       '@types/semver': 7.5.8
       find-up: 5.0.0
       fs-extra: 11.2.0
-      magic-string: 0.30.12
+      magic-string: 0.30.17
       react: 18.3.1
       react-docgen: 7.1.0
       react-dom: 18.3.1(react@18.3.1)
@@ -18432,7 +18673,7 @@ packages:
       typescript: '>= 3.x'
       webpack: '>= 4'
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       endent: 2.1.0
       find-cache-dir: 3.3.2
       flat-cache: 3.2.0
@@ -18451,7 +18692,7 @@ packages:
       typescript: '>= 4.x'
       webpack: '>= 4'
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       endent: 2.1.0
       find-cache-dir: 3.3.2
       flat-cache: 3.2.0
@@ -18470,7 +18711,7 @@ packages:
       typescript: '>= 4.x'
       webpack: '>= 4'
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       endent: 2.1.0
       find-cache-dir: 3.3.2
       flat-cache: 3.2.0
@@ -18948,7 +19189,7 @@ packages:
       '@swc-node/sourcemap-support': 0.5.1
       '@swc/core': 1.7.26(@swc/helpers@0.5.13)
       colorette: 2.0.20
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       oxc-resolver: 1.12.0
       pirates: 4.0.6
       tslib: 2.6.3
@@ -19917,6 +20158,10 @@ packages:
     resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
     dev: true
 
+  /@types/minimist@1.2.5:
+    resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
+    dev: true
+
   /@types/ms@0.7.34:
     resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
 
@@ -20191,7 +20436,7 @@ packages:
       '@typescript-eslint/scope-manager': 5.62.0
       '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.0.4)
       '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.0.4)
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       eslint: 8.57.1
       graphemer: 1.4.0
       ignore: 5.3.2
@@ -20243,7 +20488,7 @@ packages:
       '@typescript-eslint/scope-manager': 5.62.0
       '@typescript-eslint/types': 5.62.0
       '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4)
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       eslint: 8.57.1
       typescript: 5.0.4
     transitivePeerDependencies:
@@ -20264,7 +20509,7 @@ packages:
       '@typescript-eslint/types': 6.21.0
       '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.2)
       '@typescript-eslint/visitor-keys': 6.21.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       eslint: 8.57.1
       typescript: 5.5.2
     transitivePeerDependencies:
@@ -20285,7 +20530,7 @@ packages:
       '@typescript-eslint/types': 7.18.0
       '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.2)
       '@typescript-eslint/visitor-keys': 7.18.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       eslint: 8.57.1
       typescript: 5.5.2
     transitivePeerDependencies:
@@ -20344,7 +20589,7 @@ packages:
     dependencies:
       '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4)
       '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.0.4)
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       eslint: 8.57.1
       tsutils: 3.21.0(typescript@5.0.4)
       typescript: 5.0.4
@@ -20364,7 +20609,7 @@ packages:
     dependencies:
       '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.2)
       '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.5.2)
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       eslint: 8.57.1
       ts-api-utils: 1.3.0(typescript@5.5.2)
       typescript: 5.5.2
@@ -20383,7 +20628,7 @@ packages:
     dependencies:
       '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.5.2)
       '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.5.2)
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       ts-api-utils: 1.3.0(typescript@5.5.2)
       typescript: 5.5.2
     transitivePeerDependencies:
@@ -20427,7 +20672,7 @@ packages:
     dependencies:
       '@typescript-eslint/types': 5.62.0
       '@typescript-eslint/visitor-keys': 5.62.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       globby: 11.1.0
       is-glob: 4.0.3
       semver: 7.6.3
@@ -20448,7 +20693,7 @@ packages:
     dependencies:
       '@typescript-eslint/types': 6.21.0
       '@typescript-eslint/visitor-keys': 6.21.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       globby: 11.1.0
       is-glob: 4.0.3
       minimatch: 9.0.3
@@ -20470,7 +20715,7 @@ packages:
     dependencies:
       '@typescript-eslint/types': 7.18.0
       '@typescript-eslint/visitor-keys': 7.18.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       globby: 11.1.0
       is-glob: 4.0.3
       minimatch: 9.0.5
@@ -20492,7 +20737,7 @@ packages:
     dependencies:
       '@typescript-eslint/types': 8.14.0
       '@typescript-eslint/visitor-keys': 8.14.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       fast-glob: 3.3.2
       is-glob: 4.0.3
       minimatch: 9.0.5
@@ -20514,7 +20759,7 @@ packages:
     dependencies:
       '@typescript-eslint/types': 8.8.0
       '@typescript-eslint/visitor-keys': 8.8.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       fast-glob: 3.3.2
       is-glob: 4.0.3
       minimatch: 9.0.5
@@ -20648,7 +20893,7 @@ packages:
       async-sema: 3.1.1
       bindings: 1.5.0
       estree-walker: 2.0.2
-      glob: 7.2.3
+      glob: 7.2.0
       graceful-fs: 4.2.11
       micromatch: 4.0.8
       node-gyp-build: 4.8.2
@@ -20864,7 +21109,7 @@ packages:
     peerDependencies:
       vitest: 1.6.0
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       istanbul-lib-coverage: 3.2.2
       istanbul-lib-instrument: 6.0.3
       istanbul-lib-report: 3.0.1
@@ -20885,7 +21130,7 @@ packages:
     dependencies:
       '@ampproject/remapping': 2.3.0
       '@bcoe/v8-coverage': 0.2.3
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       istanbul-lib-coverage: 3.2.2
       istanbul-lib-report: 3.0.1
       istanbul-lib-source-maps: 5.0.6
@@ -20954,7 +21199,7 @@ packages:
   /@vitest/snapshot@1.2.2:
     resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==}
     dependencies:
-      magic-string: 0.30.12
+      magic-string: 0.30.17
       pathe: 1.1.2
       pretty-format: 29.7.0
     dev: true
@@ -20962,7 +21207,7 @@ packages:
   /@vitest/snapshot@1.6.0:
     resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==}
     dependencies:
-      magic-string: 0.30.12
+      magic-string: 0.30.17
       pathe: 1.1.2
       pretty-format: 29.7.0
     dev: true
@@ -21079,11 +21324,11 @@ packages:
         optional: true
     dependencies:
       '@babel/core': 7.25.2
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.2)
       '@babel/template': 7.25.9
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
       '@vue/babel-helper-vue-transform-on': 1.2.5
       '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.25.2)
@@ -21100,7 +21345,7 @@ packages:
     dependencies:
       '@babel/code-frame': 7.26.2
       '@babel/core': 7.25.2
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/parser': 7.26.2
       '@vue/compiler-sfc': 3.5.10
@@ -21647,7 +21892,7 @@ packages:
     resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
     engines: {node: '>= 6.0.0'}
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
     transitivePeerDependencies:
       - supports-color
 
@@ -21655,7 +21900,7 @@ packages:
     resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
     engines: {node: '>= 14'}
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -22537,7 +22782,7 @@ packages:
       '@babel/core': 7.26.0
       '@babel/helper-plugin-utils': 7.25.9
       '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0)
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
     transitivePeerDependencies:
       - supports-color
 
@@ -22556,7 +22801,7 @@ packages:
   /babel-plugin-import@1.13.5:
     resolution: {integrity: sha512-IkqnoV+ov1hdJVofly9pXRJmeDm9EtROfrc5i6eII0Hix2xMs5FEm8FG3ExMvazbnZBbgHIt6qdO8And6lCloQ==}
     dependencies:
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -22564,7 +22809,7 @@ packages:
   /babel-plugin-import@1.13.8:
     resolution: {integrity: sha512-36babpjra5m3gca44V6tSTomeBlPA7cHUynrE2WiQIm3rEGD9xy28MKsx5IdO45EbnpJY7Jrgd00C6Dwt/l/2Q==}
     dependencies:
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -22683,7 +22928,7 @@ packages:
       styled-components: '>= 2'
     dependencies:
       '@babel/helper-annotate-as-pure': 7.25.9
-      '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+      '@babel/helper-module-imports': 7.25.9
       babel-plugin-syntax-jsx: 6.18.0
       lodash: 4.17.21
       styled-components: 6.1.13(react-dom@18.3.1)(react@18.3.1)
@@ -24077,7 +24322,7 @@ packages:
     dependencies:
       '@types/semver': 7.5.8
       conventional-commits-filter: 5.0.0
-      handlebars: 4.7.8
+      handlebars: 4.7.7
       meow: 13.2.0
       semver: 7.6.3
     dev: true
@@ -24182,7 +24427,7 @@ packages:
       normalize-path: 3.0.0
       schema-utils: 4.2.0
       serialize-javascript: 6.0.2
-      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)
+      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)
 
   /copy-webpack-plugin@11.0.0(webpack@5.93.0):
     resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==}
@@ -24251,6 +24496,11 @@ packages:
     requiresBuild: true
     dev: true
 
+  /core-js@3.40.0:
+    resolution: {integrity: sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==}
+    requiresBuild: true
+    dev: true
+
   /core-util-is@1.0.2:
     resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
 
@@ -24527,7 +24777,7 @@ packages:
       postcss-modules-values: 4.0.0(postcss@8.4.47)
       postcss-value-parser: 4.2.0
       semver: 7.6.3
-      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)
+      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)
 
   /css-loader@6.11.0(@rspack/core@1.1.1)(webpack@5.93.0):
     resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==}
@@ -25290,7 +25540,6 @@ packages:
     dependencies:
       ms: 2.1.3
       supports-color: 9.3.1
-    dev: true
 
   /decimal.js@10.4.3:
     resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
@@ -25537,7 +25786,7 @@ packages:
     hasBin: true
     dependencies:
       address: 1.2.2
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
     transitivePeerDependencies:
       - supports-color
 
@@ -26222,7 +26471,7 @@ packages:
     peerDependencies:
       esbuild: '>=0.12 <1'
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       esbuild: 0.17.19
     transitivePeerDependencies:
       - supports-color
@@ -26233,7 +26482,7 @@ packages:
     peerDependencies:
       esbuild: '>=0.12 <1'
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       esbuild: 0.18.20
     transitivePeerDependencies:
       - supports-color
@@ -26244,7 +26493,7 @@ packages:
     peerDependencies:
       esbuild: '>=0.12 <1'
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       esbuild: 0.23.1
     transitivePeerDependencies:
       - supports-color
@@ -26633,7 +26882,7 @@ packages:
         optional: true
     dependencies:
       '@nolyfill/is-core-module': 1.0.39
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       enhanced-resolve: 5.17.1
       eslint: 8.57.1
       eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)
@@ -27063,7 +27312,7 @@ packages:
       ajv: 6.12.6
       chalk: 4.1.2
       cross-spawn: 7.0.3
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       doctrine: 3.0.0
       escape-string-regexp: 4.0.0
       eslint-scope: 7.2.2
@@ -27140,7 +27389,7 @@ packages:
     resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==}
     engines: {node: '>=8.3.0'}
     dependencies:
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
       c8: 7.14.0
     transitivePeerDependencies:
@@ -27645,17 +27894,6 @@ packages:
       picomatch: 2.3.1
     dev: false
 
-  /fdir@6.4.0(picomatch@4.0.2):
-    resolution: {integrity: sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==}
-    peerDependencies:
-      picomatch: ^3 || ^4
-    peerDependenciesMeta:
-      picomatch:
-        optional: true
-    dependencies:
-      picomatch: 4.0.2
-    dev: false
-
   /fdir@6.4.2(picomatch@4.0.2):
     resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==}
     peerDependencies:
@@ -27665,7 +27903,6 @@ packages:
         optional: true
     dependencies:
       picomatch: 4.0.2
-    dev: true
 
   /fetch-blob@3.2.0:
     resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
@@ -27995,7 +28232,7 @@ packages:
       debug:
         optional: true
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
 
   /for-each@0.3.3:
     resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
@@ -28663,6 +28900,17 @@ packages:
       path-is-absolute: 1.0.1
     dev: true
 
+  /glob@7.2.0:
+    resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
+    deprecated: Glob versions prior to v9 are no longer supported
+    dependencies:
+      fs.realpath: 1.0.0
+      inflight: 1.0.6
+      inherits: 2.0.4
+      minimatch: 3.1.2
+      once: 1.4.0
+      path-is-absolute: 1.0.1
+
   /glob@7.2.3:
     resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
     deprecated: Glob versions prior to v9 are no longer supported
@@ -28673,6 +28921,7 @@ packages:
       minimatch: 3.1.2
       once: 1.4.0
       path-is-absolute: 1.0.1
+    dev: true
 
   /glob@8.1.0:
     resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
@@ -28759,7 +29008,7 @@ packages:
       array-union: 2.1.0
       dir-glob: 3.0.1
       fast-glob: 3.3.2
-      glob: 7.2.3
+      glob: 7.2.0
       ignore: 5.3.2
       merge2: 1.4.1
       slash: 3.0.0
@@ -28882,6 +29131,18 @@ packages:
   /handle-thing@2.0.1:
     resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
 
+  /handlebars@4.7.7:
+    resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==}
+    engines: {node: '>=0.4.7'}
+    hasBin: true
+    dependencies:
+      minimist: 1.2.8
+      neo-async: 2.6.2
+      source-map: 0.6.1
+      wordwrap: 1.0.0
+    optionalDependencies:
+      uglify-js: 3.19.3
+
   /handlebars@4.7.8:
     resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
     engines: {node: '>=0.4.7'}
@@ -29569,7 +29830,7 @@ packages:
     dependencies:
       '@tootallnate/once': 2.0.0
       agent-base: 6.0.2
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -29579,7 +29840,7 @@ packages:
     engines: {node: '>= 14'}
     dependencies:
       agent-base: 7.1.1
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -29607,7 +29868,7 @@ packages:
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
       '@types/http-proxy': 1.17.15
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       http-proxy: 1.18.1(debug@4.3.7)
       is-glob: 4.0.3
       is-plain-object: 5.0.0
@@ -29687,7 +29948,7 @@ packages:
     engines: {node: '>= 6.0.0'}
     dependencies:
       agent-base: 5.1.1
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -29697,7 +29958,7 @@ packages:
     engines: {node: '>= 6'}
     dependencies:
       agent-base: 6.0.2
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
     transitivePeerDependencies:
       - supports-color
 
@@ -29706,7 +29967,7 @@ packages:
     engines: {node: '>= 14'}
     dependencies:
       agent-base: 7.1.1
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -29853,7 +30114,7 @@ packages:
     resolution: {integrity: sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==}
     engines: {node: '>=16.20'}
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       import-meta-resolve: 4.1.0
     transitivePeerDependencies:
       - supports-color
@@ -30687,7 +30948,7 @@ packages:
     resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
     engines: {node: '>=10'}
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       istanbul-lib-coverage: 3.2.2
       source-map: 0.6.1
     transitivePeerDependencies:
@@ -30699,7 +30960,7 @@ packages:
     engines: {node: '>=10'}
     dependencies:
       '@jridgewell/trace-mapping': 0.3.25
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       istanbul-lib-coverage: 3.2.2
     transitivePeerDependencies:
       - supports-color
@@ -30876,7 +31137,7 @@ packages:
       chalk: 4.1.2
       ci-info: 3.9.0
       deepmerge: 4.3.1
-      glob: 7.2.3
+      glob: 7.2.0
       graceful-fs: 4.2.11
       jest-circus: 29.7.0
       jest-environment-node: 29.7.0
@@ -30916,7 +31177,7 @@ packages:
       chalk: 4.1.2
       ci-info: 3.9.0
       deepmerge: 4.3.1
-      glob: 7.2.3
+      glob: 7.2.0
       graceful-fs: 4.2.11
       jest-circus: 29.7.0
       jest-environment-node: 29.7.0
@@ -30956,7 +31217,7 @@ packages:
       chalk: 4.1.2
       ci-info: 3.9.0
       deepmerge: 4.3.1
-      glob: 7.2.3
+      glob: 7.2.0
       graceful-fs: 4.2.11
       jest-circus: 29.7.0
       jest-environment-node: 29.7.0
@@ -31198,7 +31459,7 @@ packages:
       chalk: 4.1.2
       cjs-module-lexer: 1.4.1
       collect-v8-coverage: 1.0.2
-      glob: 7.2.3
+      glob: 7.2.0
       graceful-fs: 4.2.11
       jest-haste-map: 29.7.0
       jest-message-util: 29.7.0
@@ -31741,7 +32002,7 @@ packages:
       content-disposition: 0.5.4
       content-type: 1.0.5
       cookies: 0.9.1
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       delegates: 1.0.0
       depd: 2.0.0
       destroy: 1.2.0
@@ -31895,7 +32156,7 @@ packages:
       webpack-sources:
         optional: true
     dependencies:
-      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)
+      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)
       webpack-sources: 3.2.3
 
   /lilconfig@2.1.0:
@@ -32198,7 +32459,7 @@ packages:
     engines: {node: '>=8.0'}
     dependencies:
       date-format: 4.0.14
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       flatted: 3.3.1
       rfdc: 1.4.1
       streamroller: 3.1.5
@@ -33059,7 +33320,7 @@ packages:
     resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==}
     dependencies:
       '@types/debug': 4.1.12
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       decode-named-character-reference: 1.0.2
       micromark-core-commonmark: 1.1.0
       micromark-factory-space: 1.1.0
@@ -33875,7 +34136,7 @@ packages:
     engines: {node: '>=10'}
     hasBin: true
     dependencies:
-      glob: 7.2.3
+      glob: 7.2.0
       ignore-walk: 3.0.4
       npm-bundled: 1.1.2
       npm-normalize-package-bin: 1.0.1
@@ -36656,7 +36917,7 @@ packages:
     engines: {node: '>=8.16.0'}
     dependencies:
       '@types/mime-types': 2.1.4
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       extract-zip: 1.7.0
       https-proxy-agent: 4.0.0
       mime: 2.6.0
@@ -37827,7 +38088,7 @@ packages:
     engines: {node: '>=16.14.0'}
     dependencies:
       '@babel/core': 7.26.0
-      '@babel/traverse': 7.25.9(supports-color@5.5.0)
+      '@babel/traverse': 7.25.9
       '@babel/types': 7.26.0
       '@types/babel__core': 7.20.5
       '@types/babel__traverse': 7.20.6
@@ -38837,7 +39098,7 @@ packages:
     deprecated: Rimraf versions prior to v4 are no longer supported
     hasBin: true
     dependencies:
-      glob: 7.2.3
+      glob: 7.2.0
     dev: true
 
   /rimraf@2.7.1:
@@ -38845,7 +39106,7 @@ packages:
     deprecated: Rimraf versions prior to v4 are no longer supported
     hasBin: true
     dependencies:
-      glob: 7.2.3
+      glob: 7.2.0
     dev: true
 
   /rimraf@3.0.2:
@@ -38853,7 +39114,7 @@ packages:
     deprecated: Rimraf versions prior to v4 are no longer supported
     hasBin: true
     dependencies:
-      glob: 7.2.3
+      glob: 7.2.0
 
   /rimraf@5.0.10:
     resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
@@ -39025,6 +39286,26 @@ packages:
       typescript: 5.5.2
     dev: true
 
+  /rsbuild-plugin-dts@0.3.2(@rsbuild/core@1.2.0-beta.1)(typescript@5.5.2):
+    resolution: {integrity: sha512-Gjaf5ANA6R9t92Va6utNG1iyRxCE0QLoswKvR5UkOkX5GUpNyWveze+k/6L/qrkgqGRuJqUuYX3lrwatrOUZ3A==}
+    engines: {node: '>=16.0.0'}
+    peerDependencies:
+      '@microsoft/api-extractor': ^7
+      '@rsbuild/core': 1.x
+      typescript: ^5
+    peerDependenciesMeta:
+      '@microsoft/api-extractor':
+        optional: true
+      typescript:
+        optional: true
+    dependencies:
+      '@rsbuild/core': 1.2.0-beta.1
+      magic-string: 0.30.17
+      picocolors: 1.1.1
+      tinyglobby: 0.2.10
+      typescript: 5.5.2
+    dev: true
+
   /rsbuild-plugin-html-minifier-terser@1.1.1(@rsbuild/core@1.1.12):
     resolution: {integrity: sha512-rbDLv+XmGeSQo9JWKSwBst3Qwx1opLqtQCnQ3t9Z0F0ZTxKOC1S/ypPv5tSn/S3GMHct5Yb76mMgh6p80hjOAQ==}
     peerDependencies:
@@ -39038,6 +39319,19 @@ packages:
       html-minifier-terser: 7.2.0
     dev: true
 
+  /rsbuild-plugin-publint@0.2.1(@rsbuild/core@1.2.0-beta.1):
+    resolution: {integrity: sha512-iD/qeXWHmx2KKRT3cZ0lWa6Nz+K3NWFkVBfq+NQC3LAtHZCMftBbUzbjbJsjDiH195PVPdPmy+5qbxLf6HYqKg==}
+    peerDependencies:
+      '@rsbuild/core': 1.x
+    peerDependenciesMeta:
+      '@rsbuild/core':
+        optional: true
+    dependencies:
+      '@rsbuild/core': 1.2.0-beta.1
+      picocolors: 1.1.1
+      publint: 0.2.12
+    dev: true
+
   /rslog@1.2.3:
     resolution: {integrity: sha512-antALPJaKBRPBU1X2q9t085K4htWDOOv/K1qhTUk7h0l1ePU/KbDqKJn19eKP0dk7PqMioeA0+fu3gyPXCsXxQ==}
     engines: {node: '>=14.17.6'}
@@ -39609,7 +39903,7 @@ packages:
       klona: 2.0.6
       neo-async: 2.6.2
       sass: 1.79.4
-      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)
+      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)
 
   /sass-loader@13.3.3(webpack@5.93.0):
     resolution: {integrity: sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==}
@@ -39732,7 +40026,7 @@ packages:
       '@semantic-release/release-notes-generator': 14.0.1(semantic-release@24.1.2)
       aggregate-error: 5.0.0
       cosmiconfig: 9.0.0(typescript@5.5.2)
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       env-ci: 11.1.0
       execa: 9.4.0
       figures: 6.1.0
@@ -39843,7 +40137,7 @@ packages:
     resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==}
     engines: {node: '>= 18'}
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       destroy: 1.2.0
       encodeurl: 2.0.0
       escape-html: 1.0.3
@@ -40088,7 +40382,6 @@ packages:
 
   /sisteransi@1.0.5:
     resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
-    dev: true
 
   /skin-tone@2.0.0:
     resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==}
@@ -40327,7 +40620,7 @@ packages:
   /spdy-transport@3.0.0:
     resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       detect-node: 2.1.0
       hpack.js: 2.1.6
       obuf: 1.1.2
@@ -40340,7 +40633,7 @@ packages:
     resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
     engines: {node: '>=6.0.0'}
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       handle-thing: 2.0.1
       http-deceiver: 1.2.7
       select-hose: 2.0.0
@@ -40610,7 +40903,7 @@ packages:
     engines: {node: '>=8.0'}
     dependencies:
       date-format: 4.0.14
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       fs-extra: 8.1.0
     transitivePeerDependencies:
       - supports-color
@@ -40862,7 +41155,7 @@ packages:
     peerDependencies:
       webpack: ^5.0.0
     dependencies:
-      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)
+      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)
 
   /style-to-object@0.3.0:
     resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==}
@@ -41034,7 +41327,7 @@ packages:
     hasBin: true
     dependencies:
       '@adobe/css-tools': 4.3.3
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       glob: 10.4.5
       sax: 1.4.1
       source-map: 0.7.4
@@ -41101,7 +41394,6 @@ packages:
   /supports-color@9.3.1:
     resolution: {integrity: sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==}
     engines: {node: '>=12'}
-    dev: true
 
   /supports-hyperlinks@2.3.0:
     resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==}
@@ -41542,7 +41834,7 @@ packages:
     engines: {node: '>=8'}
     dependencies:
       '@istanbuljs/schema': 0.1.3
-      glob: 7.2.3
+      glob: 7.2.0
       minimatch: 3.1.2
     dev: true
 
@@ -41641,7 +41933,7 @@ packages:
     resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==}
     engines: {node: '>=12.0.0'}
     dependencies:
-      fdir: 6.4.0(picomatch@4.0.2)
+      fdir: 6.4.2(picomatch@4.0.2)
       picomatch: 4.0.2
     dev: false
 
@@ -42187,7 +42479,7 @@ packages:
       bundle-require: 4.2.1(esbuild@0.18.20)
       cac: 6.7.14
       chokidar: 3.6.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       esbuild: 0.18.20
       execa: 5.1.1
       globby: 11.1.0
@@ -42229,7 +42521,7 @@ packages:
       cac: 6.7.14
       chokidar: 3.6.0
       consola: 3.2.3
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       esbuild: 0.23.0
       execa: 5.1.1
       joycon: 3.1.1
@@ -43031,7 +43323,7 @@ packages:
       compression: 1.7.4
       cookies: 0.9.1
       cors: 2.8.5
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       envinfo: 7.11.0
       express: 4.18.2
       express-rate-limit: 5.5.1
@@ -43146,7 +43438,7 @@ packages:
     hasBin: true
     dependencies:
       cac: 6.7.14
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       pathe: 1.1.2
       picocolors: 1.1.1
       vite: 5.2.14(@types/node@20.12.14)(less@4.2.0)(stylus@0.64.0)
@@ -43167,7 +43459,7 @@ packages:
     hasBin: true
     dependencies:
       cac: 6.7.14
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       pathe: 1.1.2
       picocolors: 1.1.1
       vite: 5.2.14(@types/node@18.16.9)(less@4.2.0)(stylus@0.64.0)
@@ -43197,7 +43489,7 @@ packages:
       '@volar/typescript': 2.4.5
       '@vue/language-core': 2.1.6(typescript@5.5.2)
       compare-versions: 6.1.1
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       kolorist: 1.8.0
       local-pkg: 0.5.0
       magic-string: 0.30.12
@@ -43224,7 +43516,7 @@ packages:
       '@volar/typescript': 2.4.5
       '@vue/language-core': 2.1.6(typescript@5.5.2)
       compare-versions: 6.1.1
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       kolorist: 1.8.0
       local-pkg: 0.5.0
       magic-string: 0.30.12
@@ -43244,7 +43536,7 @@ packages:
       vite:
         optional: true
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       globrex: 0.1.2
       tsconfck: 2.1.2(typescript@5.5.2)
       vite: 5.2.14(@types/node@18.16.9)(less@4.2.0)(stylus@0.64.0)
@@ -43414,7 +43706,7 @@ packages:
       acorn-walk: 8.3.4
       cac: 6.7.14
       chai: 4.5.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       execa: 8.0.1
       local-pkg: 0.5.0
       magic-string: 0.30.11
@@ -43471,7 +43763,7 @@ packages:
       '@vitest/utils': 1.6.0
       acorn-walk: 8.3.4
       chai: 4.5.0
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       execa: 8.0.1
       local-pkg: 0.5.0
       magic-string: 0.30.11
@@ -43520,7 +43812,7 @@ packages:
     peerDependencies:
       eslint: '>=6.0.0'
     dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
+      debug: 4.3.7(supports-color@9.3.1)
       eslint: 8.57.1
       eslint-scope: 7.2.2
       eslint-visitor-keys: 3.4.3
@@ -43724,7 +44016,7 @@ packages:
       on-finished: 2.4.1
       range-parser: 1.2.1
       schema-utils: 4.2.0
-      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)
+      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)
 
   /webpack-dev-server@5.0.4(webpack@5.93.0):
     resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==}
@@ -43877,7 +44169,7 @@ packages:
     dependencies:
       html-webpack-plugin: 5.6.2(@rspack/core@1.0.8)(webpack@5.93.0)
       typed-assert: 1.0.9
-      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)
+      webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)
 
   /webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.3)(webpack@5.95.0):
     resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==}

From a533fff602ee2895cb60b2c988ab55f789212d11 Mon Sep 17 00:00:00 2001
From: 2heal1 <TwoHeal@163.com>
Date: Tue, 21 Jan 2025 17:15:16 +0800
Subject: [PATCH 2/2] chore: modify tempplate

---
 .../create-module-federation/package.json     |  7 +-
 .../create-module-federation/project.json     | 19 ++--
 .../create-module-federation/src/create.ts    | 76 ++++++----------
 .../src/handlebars/index.ts                   |  4 +-
 .../create-module-federation/src/index.ts     |  1 +
 .../module-federation.config.ts.handlebars    |  2 +-
 .../consumer-modern-ts/src/routes/page.tsx    | 15 +---
 .../module-federation.config.ts.handlebars    | 12 +++
 .../templates/consumer-rsbuild-ts/src/App.tsx | 15 +---
 .../src/components/ComponentInspector.css     | 86 -------------------
 .../src/components/ComponentInspector.tsx     | 68 ---------------
 .../templates/modern-common/tsconfig.json     |  3 +-
 .../provider-modern-ts/src/routes/page.tsx    | 15 +---
 .../templates/provider-rsbuild-ts/src/App.tsx | 15 +---
 .../provider-rslib-storybook-ts/.gitignore    | 16 ++++
 .../package.json.handlebars                   | 21 ++++-
 .../.gitignore                                |  0
 .../provider-rslib-ts/package.json.handlebars | 18 +---
 .../src/components/ComponentInspector.css     | 86 -------------------
 .../src/components/ComponentInspector.tsx     | 68 ---------------
 .../create-module-federation/tsconfig.json    |  4 +-
 21 files changed, 107 insertions(+), 444 deletions(-)
 create mode 100644 packages/create-module-federation/templates/consumer-rsbuild-ts/module-federation.config.ts.handlebars
 delete mode 100644 packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.css
 delete mode 100644 packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.tsx
 create mode 100644 packages/create-module-federation/templates/provider-rslib-storybook-ts/.gitignore
 rename packages/create-module-federation/templates/{lib-common => provider-rslib-ts}/.gitignore (100%)
 delete mode 100644 packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.css
 delete mode 100644 packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.tsx

diff --git a/packages/create-module-federation/package.json b/packages/create-module-federation/package.json
index 298cf225f7d..067d7bf00f9 100644
--- a/packages/create-module-federation/package.json
+++ b/packages/create-module-federation/package.json
@@ -3,7 +3,7 @@
   "description": "Create a new Module Federation project",
   "public": true,
   "sideEffects": false,
-  "version": "0.0.0",
+  "version": "0.0.0-1737428758075",
   "license": "MIT",
   "repository": {
     "type": "git",
@@ -18,11 +18,14 @@
     "build": "rslib build"
   },
   "main": "./dist/index.js",
+  "engines": {
+    "node": ">=16.7.0"
+  },
   "bin": {
     "create-module-federation": "./dist/index.js"
   },
   "files": [
-    "template",
+    "templates",
     "dist"
   ],
   "dependencies": {
diff --git a/packages/create-module-federation/project.json b/packages/create-module-federation/project.json
index 98bc4c8d17a..97a9be02ad8 100644
--- a/packages/create-module-federation/project.json
+++ b/packages/create-module-federation/project.json
@@ -32,17 +32,16 @@
       }
     },
     "test": {
-      "executor": "@nx/jest:jest",
-      "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
+      "executor": "nx:run-commands",
       "options": {
-        "jestConfig": "packages/create-module-federation/jest.config.js",
-        "passWithNoTests": true
-      },
-      "configurations": {
-        "ci": {
-          "ci": true,
-          "codeCoverage": true
-        }
+        "parallel": false,
+        "dependsOn": [
+          {
+            "target": "build",
+            "dependencies": true
+          }
+        ],
+        "commands": ["echo 'no test'"]
       }
     },
     "pre-release": {
diff --git a/packages/create-module-federation/src/create.ts b/packages/create-module-federation/src/create.ts
index 2b798ccba0d..fe9826af585 100644
--- a/packages/create-module-federation/src/create.ts
+++ b/packages/create-module-federation/src/create.ts
@@ -4,6 +4,7 @@
  */
 import path from 'path';
 import fs from 'fs';
+import { fileURLToPath } from 'url';
 import {
   cancel,
   isCancel,
@@ -18,6 +19,10 @@ import { logger } from 'rslog';
 import { FsMaterial } from './materials/FsMaterial';
 import { HandlebarsAPI } from './handlebars';
 
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+const packageDir = path.resolve(__dirname, '..');
+
 type Argv = {
   help?: boolean;
   dir?: string;
@@ -93,9 +98,11 @@ function checkCancel<T>(value: unknown) {
  * 5. Input: '/root/path/to/foo'
  *    Output: folder -> `'/root/path/to/foo'` folder, `package.json#name` -> `foo`
  */
-function formatDir(input: string) {
+function formatProjectName(input: string) {
+  const formatted = input.trim().replace(/\/+$/g, '');
   return {
-    targetDir: input.trim().replace(/\/+$/g, ''),
+    packageName: input,
+    targetDir: formatted,
   };
 }
 
@@ -118,37 +125,6 @@ async function getAppTemplateName(
     return `${template}-ts`;
   }
 
-  let providerInfo: ProviderInfo = {
-    name: '',
-    entry: '',
-  };
-
-  if (roleType === 'consumer') {
-    const providerName = checkCancel<string>(
-      await text({
-        message:
-          'Please input your provider name (You can skip by press "enter"):',
-        defaultValue: '',
-      }),
-    );
-
-    if (providerName) {
-      providerInfo.name = providerName;
-
-      const providerEntry = checkCancel<string>(
-        await text({
-          message: `Please input your provider("${providerName}") entry:`,
-          validate(value) {
-            if (value.length === 0) {
-              return 'Entry is required';
-            }
-          },
-        }),
-      );
-      providerInfo.entry = providerEntry;
-    }
-  }
-
   return `${roleType}-${framework}-ts`;
 }
 
@@ -187,7 +163,7 @@ async function getLibTemplateName({ template }: Argv) {
     return `${roleType}-${templateName}-ts`;
   }
 
-  return `${roleType}-${templateName}-[${Object.keys(tools)}]-ts`;
+  return `${roleType}-${templateName}-${tools[0]}-ts`;
 }
 
 function getTemplateName(
@@ -263,7 +239,7 @@ async function forgeTemplate({
     },
     argv,
   );
-  const material = new FsMaterial(__dirname);
+  const material = new FsMaterial(packageDir);
 
   const renderTemplate = async (templateDir: string) => {
     const templatePattern = `${templateDir}**/*`;
@@ -331,24 +307,20 @@ export async function create({
   const pkgInfo = pkgFromUserAgent(process.env['npm_config_user_agent']);
   const pkgManager = pkgInfo ? pkgInfo.name : 'npm';
 
-  const mfName =
-    argv.dir ??
-    checkCancel<string>(
-      await text({
-        message: 'Please input Module Federation name:',
-        placeholder: 'mf-project-name',
-        defaultValue: 'mf-project-name',
-        validate(value) {
-          if (value.length === 0) {
-            return 'Name is required';
-          }
-        },
-      }),
-    );
-
-  const dir = argv.dir || 'mf-project';
+  const mfName = checkCancel<string>(
+    await text({
+      message: 'Please input Module Federation name:',
+      placeholder: 'mf_project_name',
+      defaultValue: 'mf_project_name',
+      validate(value) {
+        if (value.length === 0) {
+          return 'Name is required';
+        }
+      },
+    }),
+  );
 
-  const { targetDir } = formatDir(dir);
+  const { targetDir } = formatProjectName(path.join(argv.dir || '', mfName));
   const distFolder = path.isAbsolute(targetDir)
     ? targetDir
     : path.join(cwd, targetDir);
diff --git a/packages/create-module-federation/src/handlebars/index.ts b/packages/create-module-federation/src/handlebars/index.ts
index 871d0f4892a..09e55cb41f0 100644
--- a/packages/create-module-federation/src/handlebars/index.ts
+++ b/packages/create-module-federation/src/handlebars/index.ts
@@ -34,7 +34,9 @@ export class HandlebarsAPI {
     }
     await outputFs(
       target,
-      renderString(resourceValue.content, parameters),
+      templateResource.resourceKey.endsWith('.handlebars')
+        ? renderString(resourceValue.content, parameters)
+        : resourceValue.content,
       outputFilePath,
       { encoding: 'utf-8' },
     );
diff --git a/packages/create-module-federation/src/index.ts b/packages/create-module-federation/src/index.ts
index 165aa271a85..e934916c4b3 100644
--- a/packages/create-module-federation/src/index.ts
+++ b/packages/create-module-federation/src/index.ts
@@ -1,3 +1,4 @@
+#!/usr/bin/env node
 import { create } from './create';
 
 interface Template {
diff --git a/packages/create-module-federation/templates/consumer-modern-ts/module-federation.config.ts.handlebars b/packages/create-module-federation/templates/consumer-modern-ts/module-federation.config.ts.handlebars
index 776aa71a4dd..28dbf654e4d 100644
--- a/packages/create-module-federation/templates/consumer-modern-ts/module-federation.config.ts.handlebars
+++ b/packages/create-module-federation/templates/consumer-modern-ts/module-federation.config.ts.handlebars
@@ -3,7 +3,7 @@ import { createModuleFederationConfig } from '@module-federation/modern-js';
 export default createModuleFederationConfig({
   name: '{{mfName}}',
   remotes: {
-    'provider': 'provider@http://localhost:8080/mf-manifest.json',
+    'provider': 'rslib_provider@https://unpkg.com/module-federation-rslib-provider@latest/dist/mf/mf-manifest.json',
   },
   shared: {
     react: { singleton: true },
diff --git a/packages/create-module-federation/templates/consumer-modern-ts/src/routes/page.tsx b/packages/create-module-federation/templates/consumer-modern-ts/src/routes/page.tsx
index b1970527406..68d8a4ff3a9 100644
--- a/packages/create-module-federation/templates/consumer-modern-ts/src/routes/page.tsx
+++ b/packages/create-module-federation/templates/consumer-modern-ts/src/routes/page.tsx
@@ -1,6 +1,5 @@
 import { Helmet } from '@modern-js/runtime/head';
 import './index.css';
-import { ComponentInspector } from '../components/ComponentInspector';
 import Header from 'provider/Header';
 import Description from 'provider/Description';
 import Footer from 'provider/Footer';
@@ -16,17 +15,9 @@ const Index = () => (
     </Helmet>
 
     <div className="landing-page">
-      <ComponentInspector componentName="Header" mfName="provider">
-        <Header />
-      </ComponentInspector>
-
-      <ComponentInspector componentName="Description" mfName="provider">
-        <Description />
-      </ComponentInspector>
-
-      <ComponentInspector componentName="Footer" mfName="provider">
-        <Footer />
-      </ComponentInspector>
+      <Header />
+      <Description />
+      <Footer />
     </div>
   </div>
 );
diff --git a/packages/create-module-federation/templates/consumer-rsbuild-ts/module-federation.config.ts.handlebars b/packages/create-module-federation/templates/consumer-rsbuild-ts/module-federation.config.ts.handlebars
new file mode 100644
index 00000000000..51de1d0375f
--- /dev/null
+++ b/packages/create-module-federation/templates/consumer-rsbuild-ts/module-federation.config.ts.handlebars
@@ -0,0 +1,12 @@
+import { createModuleFederationConfig } from '@module-federation/rsbuild-plugin';
+
+export default createModuleFederationConfig({
+  name: '{{mfName}}',
+  remotes: {
+    'provider': 'rslib_provider@https://unpkg.com/module-federation-rslib-provider@latest/dist/mf/mf-manifest.json',
+  },
+  shared: {
+    react: { singleton: true },
+    'react-dom': { singleton: true },
+  },
+});
diff --git a/packages/create-module-federation/templates/consumer-rsbuild-ts/src/App.tsx b/packages/create-module-federation/templates/consumer-rsbuild-ts/src/App.tsx
index 7932bce7d14..29fc3a59751 100644
--- a/packages/create-module-federation/templates/consumer-rsbuild-ts/src/App.tsx
+++ b/packages/create-module-federation/templates/consumer-rsbuild-ts/src/App.tsx
@@ -1,5 +1,4 @@
 import './App.css';
-import { ComponentInspector } from './components/ComponentInspector';
 import Header from 'provider/Header';
 import Description from 'provider/Description';
 import Footer from 'provider/Footer';
@@ -7,17 +6,9 @@ import Footer from 'provider/Footer';
 const App = () => {
   return (
     <div className="content">
-      <ComponentInspector componentName="Header" mfName="provider">
-        <Header />
-      </ComponentInspector>
-
-      <ComponentInspector componentName="Description" mfName="provider">
-        <Description />
-      </ComponentInspector>
-
-      <ComponentInspector componentName="Footer" mfName="provider">
-        <Footer />
-      </ComponentInspector>
+      <Header />
+      <Description />
+      <Footer />
     </div>
   );
 };
diff --git a/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.css b/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.css
deleted file mode 100644
index da68e5015ea..00000000000
--- a/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.css
+++ /dev/null
@@ -1,86 +0,0 @@
-.component-inspector {
-  position: relative;
-  display: inline-block;
-}
-
-.inspector-info {
-  position: fixed;
-  z-index: 1000;
-  background: #1a1a1a;
-  padding: 4px 8px;
-  border-radius: 4px;
-  font-size: 12px;
-  color: #fff;
-  pointer-events: none;
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
-.inspector-overlay {
-  position: fixed;
-  border-radius: 4px;
-  pointer-events: none;
-  z-index: 999;
-  background:
-    linear-gradient(90deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 0,
-    linear-gradient(90deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 100%,
-    linear-gradient(0deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 0,
-    linear-gradient(0deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 100% 0;
-  background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
-  background-size:
-    200% 3px,
-    200% 3px,
-    3px 200%,
-    3px 200%; /* 将边框从 2px 加粗到 3px */
-  animation: borderRotate 4s linear infinite;
-}
-
-@keyframes borderRotate {
-  0% {
-    background-position:
-      0% 0,
-      0% 100%,
-      0 0%,
-      100% 0%;
-  }
-  100% {
-    background-position:
-      200% 0,
-      -200% 100%,
-      0 -200%,
-      100% 200%;
-  }
-}
-.mf-tag {
-  color: #646cff;
-  font-weight: 500;
-  position: relative;
-  padding-left: 16px;
-}
-
-.mf-tag::before {
-  content: '';
-  position: absolute;
-  left: 0;
-  top: 50%;
-  transform: translateY(-50%);
-  width: 12px;
-  height: 12px;
-  background-image: url('https://module-federation.io/svg.svg');
-  background-repeat: no-repeat;
-  background-position: center;
-  background-size: contain;
-}
-
-.divider {
-  color: #4a4a4a;
-}
-
-.gradient-text {
-  background: linear-gradient(90deg, #60a5fa, #ec4899);
-  -webkit-background-clip: text;
-  background-clip: text;
-  -webkit-text-fill-color: transparent;
-  font-weight: 500;
-}
diff --git a/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.tsx b/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.tsx
deleted file mode 100644
index 50128edf471..00000000000
--- a/packages/create-module-federation/templates/modern-common/src/components/ComponentInspector.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React, { useState } from 'react';
-import './ComponentInspector.css';
-
-interface InspectorInfo {
-  top: number;
-  left: number;
-  width: number;
-  height: number;
-}
-
-export const ComponentInspector: React.FC<{
-  children: React.ReactNode;
-  componentName: string;
-  mfName: string;
-}> = ({ children, componentName, mfName }) => {
-  const [inspectorInfo, setInspectorInfo] = useState<InspectorInfo | null>(
-    null,
-  );
-
-  const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {
-    const rect = e.currentTarget.getBoundingClientRect();
-    setInspectorInfo({
-      top: rect.top,
-      left: rect.left,
-      width: rect.width,
-      height: rect.height,
-    });
-  };
-
-  const handleMouseLeave = () => {
-    setInspectorInfo(null);
-  };
-
-  return (
-    <div
-      className="component-inspector"
-      onMouseEnter={handleMouseEnter}
-      onMouseLeave={handleMouseLeave}
-    >
-      {children}
-      {inspectorInfo && (
-        <>
-          <div
-            className="inspector-info"
-            style={{
-              top: `${inspectorInfo.top - 30}px`,
-              left: `${inspectorInfo.left}px`,
-              width: `${inspectorInfo.width}px`,
-            }}
-          >
-            <span className="mf-tag">{mfName}</span>
-            <span className="divider">|</span>
-            <span className="gradient-text">{componentName}</span>
-          </div>
-          <div
-            className="inspector-overlay"
-            style={{
-              top: `${inspectorInfo.top}px`,
-              left: `${inspectorInfo.left}px`,
-              width: `${inspectorInfo.width}px`,
-              height: `${inspectorInfo.height}px`,
-            }}
-          />
-        </>
-      )}
-    </div>
-  );
-};
diff --git a/packages/create-module-federation/templates/modern-common/tsconfig.json b/packages/create-module-federation/templates/modern-common/tsconfig.json
index ce7f951eefc..26ef0ff0304 100644
--- a/packages/create-module-federation/templates/modern-common/tsconfig.json
+++ b/packages/create-module-federation/templates/modern-common/tsconfig.json
@@ -6,7 +6,8 @@
     "baseUrl": "./",
     "paths": {
       "@/*": ["./src/*"],
-      "@shared/*": ["./shared/*"]
+      "@shared/*": ["./shared/*"],
+      "*": ["./@mf-types/*"]
     }
   },
   "include": ["src", "shared", "config", "modern.config.ts"],
diff --git a/packages/create-module-federation/templates/provider-modern-ts/src/routes/page.tsx b/packages/create-module-federation/templates/provider-modern-ts/src/routes/page.tsx
index 18bbf92c261..862fa4f73cd 100644
--- a/packages/create-module-federation/templates/provider-modern-ts/src/routes/page.tsx
+++ b/packages/create-module-federation/templates/provider-modern-ts/src/routes/page.tsx
@@ -1,6 +1,5 @@
 import { Helmet } from '@modern-js/runtime/head';
 import './index.css';
-import { ComponentInspector } from '../components/ComponentInspector';
 import Header from '../components/Header';
 import Description from '../components/Description';
 import Footer from '../components/Footer';
@@ -16,17 +15,9 @@ const Index = () => (
     </Helmet>
 
     <div className="landing-page">
-      <ComponentInspector componentName="Header" mfName="provider">
-        <Header />
-      </ComponentInspector>
-
-      <ComponentInspector componentName="Description" mfName="provider">
-        <Description />
-      </ComponentInspector>
-
-      <ComponentInspector componentName="Footer" mfName="provider">
-        <Footer />
-      </ComponentInspector>
+      <Header />
+      <Description />
+      <Footer />
     </div>
   </div>
 );
diff --git a/packages/create-module-federation/templates/provider-rsbuild-ts/src/App.tsx b/packages/create-module-federation/templates/provider-rsbuild-ts/src/App.tsx
index fbd2f7a18e3..efeaaa0cbf6 100644
--- a/packages/create-module-federation/templates/provider-rsbuild-ts/src/App.tsx
+++ b/packages/create-module-federation/templates/provider-rsbuild-ts/src/App.tsx
@@ -1,5 +1,4 @@
 import './App.css';
-import { ComponentInspector } from './components/ComponentInspector';
 import Header from './components/Header';
 import Description from './components/Description';
 import Footer from './components/Footer';
@@ -7,17 +6,9 @@ import Footer from './components/Footer';
 const App = () => {
   return (
     <div className="content">
-      <ComponentInspector componentName="Header" mfName="provider">
-        <Header />
-      </ComponentInspector>
-
-      <ComponentInspector componentName="Description" mfName="provider">
-        <Description />
-      </ComponentInspector>
-
-      <ComponentInspector componentName="Footer" mfName="provider">
-        <Footer />
-      </ComponentInspector>
+      <Header />
+      <Description />
+      <Footer />
     </div>
   );
 };
diff --git a/packages/create-module-federation/templates/provider-rslib-storybook-ts/.gitignore b/packages/create-module-federation/templates/provider-rslib-storybook-ts/.gitignore
new file mode 100644
index 00000000000..c5f1042988d
--- /dev/null
+++ b/packages/create-module-federation/templates/provider-rslib-storybook-ts/.gitignore
@@ -0,0 +1,16 @@
+# Local
+.DS_Store
+*.local
+*.log*
+
+# Dist
+node_modules
+dist/
+
+# IDE
+.vscode/*
+!.vscode/extensions.json
+.idea
+
+# Storybook dist
+storybook-static/
diff --git a/packages/create-module-federation/templates/provider-rslib-storybook-ts/package.json.handlebars b/packages/create-module-federation/templates/provider-rslib-storybook-ts/package.json.handlebars
index 4d5eced7abc..aa90a07f55c 100644
--- a/packages/create-module-federation/templates/provider-rslib-storybook-ts/package.json.handlebars
+++ b/packages/create-module-federation/templates/provider-rslib-storybook-ts/package.json.handlebars
@@ -15,17 +15,32 @@
   ],
   "scripts": {
     "build": "rslib build",
+    "build:storybook": "storybook build",
     "dev": "rslib build --watch",
+    "storybook": "storybook dev -p 6006",
     "mf-dev": "rslib mf-dev"
   },
   "devDependencies": {
     "@rsbuild/core": "1.2.0-beta.0",
     "@rsbuild/plugin-react": "^1.1.0",
     "@rslib/core": "^0.3.1",
-    "@types/react": "^19.0.4",
-    "react": "^19.0.0",
+    "@storybook/addon-essentials": "^8.4.7",
+    "@storybook/addon-interactions": "^8.4.7",
+    "@storybook/addon-links": "^8.4.7",
+    "@storybook/addon-onboarding": "^8.4.7",
+    "@storybook/blocks": "^8.4.7",
+    "@storybook/react": "^8.4.7",
+    "@storybook/test": "^8.4.7",
+    "@types/react": "^18.3.11",
+    "@types/react-dom": "~18.3.1",
+    "react": "^18.3.1",
+    "react-dom": "^18.3.1",
+    "storybook": "^8.4.7",
+    "storybook-addon-rslib": "^0.1.7",
+    "storybook-react-rsbuild": "^0.1.7",
     "typescript": "^5.7.3",
-    "@module-federation/rsbuild-plugin":"^0.8.9"
+    "@module-federation/rsbuild-plugin":"^0.8.9",
+    "@module-federation/storybook-addon":"^4.0.1"
   },
   "peerDependencies": {
     "react": ">=16.9.0",
diff --git a/packages/create-module-federation/templates/lib-common/.gitignore b/packages/create-module-federation/templates/provider-rslib-ts/.gitignore
similarity index 100%
rename from packages/create-module-federation/templates/lib-common/.gitignore
rename to packages/create-module-federation/templates/provider-rslib-ts/.gitignore
diff --git a/packages/create-module-federation/templates/provider-rslib-ts/package.json.handlebars b/packages/create-module-federation/templates/provider-rslib-ts/package.json.handlebars
index 0b45bb19815..0391fdb6a34 100644
--- a/packages/create-module-federation/templates/provider-rslib-ts/package.json.handlebars
+++ b/packages/create-module-federation/templates/provider-rslib-ts/package.json.handlebars
@@ -15,31 +15,17 @@
   ],
   "scripts": {
     "build": "rslib build",
-    "build:storybook": "storybook build",
     "dev": "rslib build --watch",
-    "storybook": "storybook dev -p 6006",
     "mf-dev": "rslib mf-dev"
   },
   "devDependencies": {
     "@rsbuild/core": "1.2.0-beta.0",
     "@rsbuild/plugin-react": "^1.1.0",
     "@rslib/core": "^0.3.1",
-    "@storybook/addon-essentials": "^8.4.7",
-    "@storybook/addon-interactions": "^8.4.7",
-    "@storybook/addon-links": "^8.4.7",
-    "@storybook/addon-onboarding": "^8.4.7",
-    "@storybook/blocks": "^8.4.7",
-    "@storybook/react": "^8.4.7",
-    "@storybook/test": "^8.4.7",
-    "@types/react": "^19.0.4",
-    "react": "^19.0.0",
-    "react-dom": "^19.0.0",
-    "storybook": "^8.4.7",
-    "storybook-addon-rslib": "^0.1.7",
-    "storybook-react-rsbuild": "^0.1.7",
+    "@types/react": "^18.3.11",
+    "react": "^18.3.1",
     "typescript": "^5.7.3",
     "@module-federation/rsbuild-plugin":"^0.8.9",
-    "@module-federation/storybook-addon":"^4.0.1"
   },
   "peerDependencies": {
     "react": ">=16.9.0",
diff --git a/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.css b/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.css
deleted file mode 100644
index da68e5015ea..00000000000
--- a/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.css
+++ /dev/null
@@ -1,86 +0,0 @@
-.component-inspector {
-  position: relative;
-  display: inline-block;
-}
-
-.inspector-info {
-  position: fixed;
-  z-index: 1000;
-  background: #1a1a1a;
-  padding: 4px 8px;
-  border-radius: 4px;
-  font-size: 12px;
-  color: #fff;
-  pointer-events: none;
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
-.inspector-overlay {
-  position: fixed;
-  border-radius: 4px;
-  pointer-events: none;
-  z-index: 999;
-  background:
-    linear-gradient(90deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 0,
-    linear-gradient(90deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 100%,
-    linear-gradient(0deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 0 0,
-    linear-gradient(0deg, #3b82f6 0%, #ec4899 50%, #3b82f6 100%) 100% 0;
-  background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
-  background-size:
-    200% 3px,
-    200% 3px,
-    3px 200%,
-    3px 200%; /* 将边框从 2px 加粗到 3px */
-  animation: borderRotate 4s linear infinite;
-}
-
-@keyframes borderRotate {
-  0% {
-    background-position:
-      0% 0,
-      0% 100%,
-      0 0%,
-      100% 0%;
-  }
-  100% {
-    background-position:
-      200% 0,
-      -200% 100%,
-      0 -200%,
-      100% 200%;
-  }
-}
-.mf-tag {
-  color: #646cff;
-  font-weight: 500;
-  position: relative;
-  padding-left: 16px;
-}
-
-.mf-tag::before {
-  content: '';
-  position: absolute;
-  left: 0;
-  top: 50%;
-  transform: translateY(-50%);
-  width: 12px;
-  height: 12px;
-  background-image: url('https://module-federation.io/svg.svg');
-  background-repeat: no-repeat;
-  background-position: center;
-  background-size: contain;
-}
-
-.divider {
-  color: #4a4a4a;
-}
-
-.gradient-text {
-  background: linear-gradient(90deg, #60a5fa, #ec4899);
-  -webkit-background-clip: text;
-  background-clip: text;
-  -webkit-text-fill-color: transparent;
-  font-weight: 500;
-}
diff --git a/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.tsx b/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.tsx
deleted file mode 100644
index 50128edf471..00000000000
--- a/packages/create-module-federation/templates/rsbuild-common/src/components/ComponentInspector.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React, { useState } from 'react';
-import './ComponentInspector.css';
-
-interface InspectorInfo {
-  top: number;
-  left: number;
-  width: number;
-  height: number;
-}
-
-export const ComponentInspector: React.FC<{
-  children: React.ReactNode;
-  componentName: string;
-  mfName: string;
-}> = ({ children, componentName, mfName }) => {
-  const [inspectorInfo, setInspectorInfo] = useState<InspectorInfo | null>(
-    null,
-  );
-
-  const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {
-    const rect = e.currentTarget.getBoundingClientRect();
-    setInspectorInfo({
-      top: rect.top,
-      left: rect.left,
-      width: rect.width,
-      height: rect.height,
-    });
-  };
-
-  const handleMouseLeave = () => {
-    setInspectorInfo(null);
-  };
-
-  return (
-    <div
-      className="component-inspector"
-      onMouseEnter={handleMouseEnter}
-      onMouseLeave={handleMouseLeave}
-    >
-      {children}
-      {inspectorInfo && (
-        <>
-          <div
-            className="inspector-info"
-            style={{
-              top: `${inspectorInfo.top - 30}px`,
-              left: `${inspectorInfo.left}px`,
-              width: `${inspectorInfo.width}px`,
-            }}
-          >
-            <span className="mf-tag">{mfName}</span>
-            <span className="divider">|</span>
-            <span className="gradient-text">{componentName}</span>
-          </div>
-          <div
-            className="inspector-overlay"
-            style={{
-              top: `${inspectorInfo.top}px`,
-              left: `${inspectorInfo.left}px`,
-              width: `${inspectorInfo.width}px`,
-              height: `${inspectorInfo.height}px`,
-            }}
-          />
-        </>
-      )}
-    </div>
-  );
-};
diff --git a/packages/create-module-federation/tsconfig.json b/packages/create-module-federation/tsconfig.json
index 2cd74a5bff2..56e67fa0f0c 100644
--- a/packages/create-module-federation/tsconfig.json
+++ b/packages/create-module-federation/tsconfig.json
@@ -3,13 +3,13 @@
   "compilerOptions": {
     "lib": ["DOM", "ESNext"],
     "target": "ES2020",
-    "module": "Node16",
+    "module": "ESNext",
+    "moduleResolution": "Bundler",
     "forceConsistentCasingInFileNames": true,
     "strict": true,
     "noImplicitOverride": true,
     "noPropertyAccessFromIndexSignature": true,
     "noFallthroughCasesInSwitch": true,
-    "moduleResolution": "node16",
     "resolveJsonModule": true,
     "esModuleInterop": true,
     "skipLibCheck": true,