# Vite - 能够构建出满足 `Module Federation` 加载规范的模块 - 能够使用别名消费 `Module Federation` 规范的模块 - 能够设置模块的共享依赖配置,当加载模块的宿主环境已经存在对应依赖时将不会重复加载 - 当模块具备远程类型时会自动下载并消费远程模块的类型 :::warning 不支持的选项 除了 [dev](/configure/dev.md) 选项外,其他选项全部支持(包含 dts)。 ::: - roadmap 🗓️ - 消费远程模块时将具备热更新能力 - nuxt ssr ## 快速开始 ### 安装 你可以通过如下的命令安装插件: ```sh [npm] npm add @module-federation/vite --save ``` ```sh [yarn] yarn add @module-federation/vite --save ``` ```sh [pnpm] pnpm add @module-federation/vite --save ``` ```sh [bun] bun add @module-federation/vite --save ``` ### 注册插件 在 `vite` 中,你可以通过 `vite.config.js` 配置文件中的 `plugins` 配置项来添加插件: ```ts title='vite.config.js' import { federation } from '@module-federation/vite'; module.exports = { server: { origin: 'http://localhost:2000', port: 2000, }, remotes: { esm_remote: { type: "module", name: "esm_remote", entry: "https://[...]/remoteEntry.js", }, var_remote: "var_remote@https://[...]/remoteEntry.js", }, base: "http://localhost:2000", plugins: [ federation({ name: 'vite_provider', manifest: true, exposes: { './button': './src/components/button', }, shared: { react: { singleton: true, }, 'react/': { singleton: true, }, }, }), ], // Do you need to support build targets lower than chrome89? // You can use 'vite-plugin-top-level-await' plugin for that. build: { target: 'chrome89', }, }; ``` ## 配置构建插件 - Type: `ModuleFederationPlugin(options: ModuleFederationOptions)` - Module federation 插件的配置结构如下所示: ```ts type ModuleFederationOptions { name: string; filename?: string, remotes?: Array<RemoteInfo>; shared?: ShareInfos; }; ``` 你可以在 [Config 总览](/configure/index.md) 页面找到所有配置项的详细说明。