add module fedration

parent 7b63cf0b
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
"name": "vue-project-poc", "name": "vue-project-poc",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@originjs/vite-plugin-federation": "^1.3.3",
"@sangarajuguptanisum/vue-custom-components": "^0.0.3", "@sangarajuguptanisum/vue-custom-components": "^0.0.3",
"axios": "^1.6.2", "axios": "^1.6.2",
"vue": "^3.3.10", "vue": "^3.3.10",
...@@ -2952,6 +2953,38 @@ ...@@ -2952,6 +2953,38 @@
"integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==",
"dev": true "dev": true
}, },
"node_modules/@originjs/vite-plugin-federation": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/@originjs/vite-plugin-federation/-/vite-plugin-federation-1.3.3.tgz",
"integrity": "sha512-EJedGCEB1vZatougqF3A+DwbcNpaAfFjlLxp/BbxpwO36vQ/WMjvtlpfkiyeIolTbFgu85OcXAc98Q2CXtCfJQ==",
"dependencies": {
"estree-walker": "^3.0.2",
"magic-string": "^0.27.0"
},
"engines": {
"node": ">=14.0.0",
"pnpm": ">=7.0.1"
}
},
"node_modules/@originjs/vite-plugin-federation/node_modules/estree-walker": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
"dependencies": {
"@types/estree": "^1.0.0"
}
},
"node_modules/@originjs/vite-plugin-federation/node_modules/magic-string": {
"version": "0.27.0",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
"integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.13"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@pkgjs/parseargs": { "node_modules/@pkgjs/parseargs": {
"version": "0.11.0", "version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
...@@ -3292,6 +3325,11 @@ ...@@ -3292,6 +3325,11 @@
"@babel/types": "^7.20.7" "@babel/types": "^7.20.7"
} }
}, },
"node_modules/@types/estree": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
},
"node_modules/@types/graceful-fs": { "node_modules/@types/graceful-fs": {
"version": "4.1.9", "version": "4.1.9",
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
......
...@@ -4,14 +4,15 @@ ...@@ -4,14 +4,15 @@
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite --port 5000 --strictPort",
"build": "vite build", "build": "vite build",
"preview": "vite preview", "preview": "vite preview --port 5000 --strictPort",
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore", "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",
"format": "prettier --write src/", "format": "prettier --write src/",
"test": "jest" "test": "jest"
}, },
"dependencies": { "dependencies": {
"@originjs/vite-plugin-federation": "^1.3.3",
"@sangarajuguptanisum/vue-custom-components": "^0.0.3", "@sangarajuguptanisum/vue-custom-components": "^0.0.3",
"axios": "^1.6.2", "axios": "^1.6.2",
"vue": "^3.3.10", "vue": "^3.3.10",
......
<template> <template>
<CHeader :kartItems="$store.state.cart.length"> </CHeader> <RHeader :kartItems="$store.state.cart.length"></RHeader>
<div class="content"> <div class="content">
<router-view /> <router-view />
</div> </div>
<CFooter></CFooter> <RFooter></RFooter>
</template> </template>
<script> <script>
import { CHeader, CFooter } from 'vue-header-footer-mfe'
//RFooter,RHeader resembles remote footer in other app
import RFooter from 'remote-simple/remote-footer';
import RHeader from 'remote-simple/remote-header';
export default { export default {
name: 'App', name: 'App',
data() { data() {
return {} return {}
}, },
components: {}, components: { RFooter, RHeader },
methods: {}, methods: {},
created() { created() {
......
import './assets/main.css' import './assets/main.css'
import '@sangarajuguptanisum/vue-custom-components/dist/index.css'
import '@sangarajuguptanisum/vue-custom-components/dist/style.css'
import 'vue-header-footer-mfe/dist/index.css'
import vueComponents from '@sangarajuguptanisum/vue-custom-components' import vueComponents from '@sangarajuguptanisum/vue-custom-components'
import vueCustomComponents from 'vue-header-footer-mfe'
import { createApp } from 'vue' import { createApp } from 'vue'
...@@ -32,7 +29,6 @@ const router = createRouter({ ...@@ -32,7 +29,6 @@ const router = createRouter({
] ]
}) })
app.use(vueCustomComponents)
app.use(vueComponents) app.use(vueComponents)
app.use(router) app.use(router)
app.use(store) app.use(store)
......
...@@ -2,12 +2,37 @@ import { fileURLToPath, URL } from 'node:url' ...@@ -2,12 +2,37 @@ import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue' import vue from '@vitejs/plugin-vue'
import federation from '@originjs/vite-plugin-federation'
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig({ export default defineConfig({
plugins: [ plugins: [
vue(), vue(),
federation({
name: 'remote-simple',
filename: 'remoteEntry.js',
remotes: {
'remote-simple': {
external: 'http://localhost:5001/assets/remoteEntry.js',
from: "vite",
format: 'esm'
}
},
shared: ['vue','vue-router',]
})
], ],
build: {
target: 'esnext',
minify: false,
cssCodeSplit: true,
rollupOptions: {
// sharedPlugin need input required
// input:{},
output: {
minifyInternalExports: false
}
}
},
resolve: { resolve: {
alias: { alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)) '@': fileURLToPath(new URL('./src', import.meta.url))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment