Your cart is currently empty!
Vite: Module Federation with Vue3
Create two projects called vite-remote and vite-host:
npm create vite@latest vite-remote -- --template vue npm create vite@latest vite-host -- --template vue
Install the plugin in both apps:
npm install @originjs/vite-plugin-federation --save-dev # or yarn add @originjs/vite-plugin-federation --dev
Head to vite-remote and open vite.config.js:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import federation from '@originjs/vite-plugin-federation'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue(), federation({
name: 'vite-remote',
filename: 'remoteEntry.js',
exposes: {
'./Hello': './src/components/HelloWorld.vue'
}
})],
})It is important to build the project first, in order to generate dist folder, before starting the server.
Build the project with:
npx vite build
Start the server for vite-remote you should get port 5173:
npx vite dev
Next, head to vite-host and open vite.config.js:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import federation from '@originjs/vite-plugin-federation'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue(), federation({
name: 'vite-host',
remotes: {
aaa: 'http://localhost:5173/dist/assets/remoteEntry.js'
}
})],
})Remove vite-host src/components/HelloWorld.vue:
rm src/components/HelloWorld.vue
Open vite-host src/App.vue:
<script setup> // import HelloWorld from './components/HelloWorld.vue' import HelloWorld from 'aaa/Hello' </script>
Start the dev. server:
npx vite dev
You should get a working application in vite-host although we removed src/components/HelloWorld.vue.

Leave a Reply