{"_id":"@amazingywk/vite-plugin-federation","_rev":"1-7992b311e6078412204567a7dd0380d1","name":"@amazingywk/vite-plugin-federation","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@amazingywk/vite-plugin-federation","version":"1.0.0","description":"A Vite plugin which support Module Federation.","main":"./dist/index.js","module":"./dist/index.mjs","types":"./types/index.d.ts","exports":{".":{"types":"./types/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"engines":{"node":">=14.0.0","pnpm":">=7.0.1"},"repository":{"type":"git","url":"git+https://github.com/originjs/vite-plugin-federation.git"},"keywords":["vite","plugins"],"author":{"name":"@amazingywk"},"publishConfig":{"access":"public"},"license":"MulanPSL-2.0","bugs":{"url":"https://github.com/originjs/vite-plugin-federation/issues"},"homepage":"https://github.com/originjs/vite-plugin-federation#readme","scripts":{"build":"vite build","dev":"vite build --watch","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s --commit-path ."},"dependencies":{"estree-walker":"^3.0.2","magic-string":"^0.27.0"},"devDependencies":{"@rollup/plugin-virtual":"^3.0.1","@types/estree":"^0.0.50","conventional-changelog-cli":"^2.1.1","typescript":"^4.9.4","vite":"^4.0.3"},"gitHead":"138992bebd0937c750b9d6fa312cb29c94463368","_id":"@amazingywk/vite-plugin-federation@1.0.0","_nodeVersion":"16.20.1","_npmVersion":"8.19.4","dist":{"integrity":"sha512-DRoKgad20ssCH05i6U5Ox5sDEHpwdTUp0Ub2WJufeDiDS5n0ZlMmpqfM+J02NSaIgsGFScQqvgzl7yC6LuFbkw==","shasum":"ba7d36d476332e6a17a9fed6555cfd0525dd922d","tarball":"https://registry.npmjs.org/@amazingywk/vite-plugin-federation/-/vite-plugin-federation-1.0.0.tgz","fileCount":10,"unpackedSize":164730,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaDXz1q5G+5AwqdyfpovqhrJyhV/HAVZfuRxzT9stkVwIgKykH7hC79ogPdTnkP8daz9+Wj5kQTuLu7VfyMwTVGfE="}]},"_npmUser":{"name":"amazingywk","email":"641321656@qq.com"},"directories":{},"maintainers":[{"name":"amazingywk","email":"641321656@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vite-plugin-federation_1.0.0_1690168225305_0.32284526830015725"},"_hasShrinkwrap":false},"1.0.1":{"name":"@amazingywk/vite-plugin-federation","version":"1.0.1","description":"A Vite plugin which support Module Federation.","main":"./dist/index.js","module":"./dist/index.mjs","types":"./types/index.d.ts","exports":{".":{"types":"./types/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"engines":{"node":">=14.0.0","pnpm":">=7.0.1"},"repository":{"type":"git","url":"git+https://github.com/originjs/vite-plugin-federation.git"},"keywords":["vite","plugins"],"author":{"name":"@amazingywk"},"publishConfig":{"access":"public"},"license":"MulanPSL-2.0","bugs":{"url":"https://github.com/originjs/vite-plugin-federation/issues"},"homepage":"https://github.com/originjs/vite-plugin-federation#readme","scripts":{"build":"vite build","dev":"vite build --watch","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s --commit-path ."},"dependencies":{"estree-walker":"^3.0.2","magic-string":"^0.27.0"},"devDependencies":{"@rollup/plugin-virtual":"^3.0.1","@types/estree":"^0.0.50","conventional-changelog-cli":"^2.1.1","typescript":"^4.9.4","vite":"^4.0.3"},"gitHead":"138992bebd0937c750b9d6fa312cb29c94463368","_id":"@amazingywk/vite-plugin-federation@1.0.1","_nodeVersion":"16.20.1","_npmVersion":"8.19.4","dist":{"integrity":"sha512-KLqnU+BuXzNLUKt/yVZv5LaE/B6tn0Ps8jo5LlvFdWykGld0vLCpZP1DBhvjcjcbOuZHAzghiXTARBw4uMqu6A==","shasum":"d0316f2ec74c8bc5ddb649d3dc226a6d84f53dd1","tarball":"https://registry.npmjs.org/@amazingywk/vite-plugin-federation/-/vite-plugin-federation-1.0.1.tgz","fileCount":10,"unpackedSize":164734,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPnOxXsGG2tAnHfXvj9Awyf21qKoPN4naeBRAyLxDEagIhALJ3kb0V1IwnQEZsq0IbmaOk3KjIR/btSocJkEKfYHdn"}]},"_npmUser":{"name":"amazingywk","email":"641321656@qq.com"},"directories":{},"maintainers":[{"name":"amazingywk","email":"641321656@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vite-plugin-federation_1.0.1_1690168499243_0.8821718476272897"},"_hasShrinkwrap":false}},"time":{"created":"2023-07-24T03:10:25.199Z","1.0.0":"2023-07-24T03:10:25.441Z","modified":"2023-07-24T03:14:59.646Z","1.0.1":"2023-07-24T03:14:59.467Z"},"maintainers":[{"name":"amazingywk","email":"641321656@qq.com"}],"description":"A Vite plugin which support Module Federation.","homepage":"https://github.com/originjs/vite-plugin-federation#readme","keywords":["vite","plugins"],"repository":{"type":"git","url":"git+https://github.com/originjs/vite-plugin-federation.git"},"author":{"name":"@amazingywk"},"bugs":{"url":"https://github.com/originjs/vite-plugin-federation/issues"},"license":"MulanPSL-2.0","readme":"# vite-plugin-federation\n\nA Vite/Rollup plugin which support Module Federation.\nInspired by Webpack and compatible with [Webpack Module Federation](https://webpack.js.org/concepts/module-federation/).\n\n## Install\n\n```\nnpm install @originjs/vite-plugin-federation --save-dev\n```\n\nor\n\n```\nyarn add @originjs/vite-plugin-federation --dev\n```\n\n## Usage\nUsing the `Module Federation` usually requires more than 2 projects, one as the `host side` and one as the `remote side`.\n#### Step 1: Configure the remote side.\n- for a vite project, modify `vite.config.js`:\n\n```js\n// vite.config.js\nimport federation from \"@originjs/vite-plugin-federation\";\nexport default {\n    plugins: [\n        federation({\n            name: 'remote-app',\n            filename: 'remoteEntry.js',\n            // Modules to expose\n            exposes: {\n                './Button': './src/Button.vue',\n            },\n            shared: ['vue']\n        })\n    ]\n}\n```\n\n- for a rollup project, modify `rollup.config.js`:\n\n```js\n// rollup.config.js\nimport federation from '@originjs/vite-plugin-federation'\nexport default {\n    input: 'src/index.js',\n    plugins: [\n        federation({\n            name: 'remote-app',\n            filename: 'remoteEntry.js',\n            // Modules to expose\n            exposes: {\n                './Button': './src/button'.\n            },\n            shared: ['vue']\n        })\n    ]\n}\n```\n\n#### Step 2: Configure the host side\n\n- for a vite project, modify `vite.config.js`:\n\n```js\n// vite.config.js\nimport federation from \"@originjs/vite-plugin-federation\";\nexport default {\n    plugins: [\n        federation({\n            name: 'host-app',\n            remotes: {\n                remote_app: \"http://localhost:5001/assets/remoteEntry.js\",\n            },\n            shared: ['vue']\n        })\n    ]\n}\n```\n\n- for a rollup project, modify `rollup.config.js`:\n\n```js\n// rollup.config.js\nimport federation from '@originjs/vite-plugin-federation'\nexport default {\n    input: 'src/index.js',\n    plugins: [\n        federation({\n            name: 'host-app',\n            remotes: {\n                remote_app: \"http://localhost:5001/remoteEntry.js\",\n            },\n            shared: ['vue']\n        })\n    ]\n}\n```\n\n#### Step 3: Using remote modules on the host side\n\nUsing a Vue project as an example\n\n```js\nimport { createApp, defineAsyncComponent } from \"vue\";\nconst app = createApp(Layout);\n...\nconst RemoteButton = defineAsyncComponent(() => import(\"remote_app/Button\"));\napp.component(\"RemoteButton\", RemoteButton);\napp.mount(\"#root\");\n```\nUsing remote components in templates\n\n```vue\n<template>\n    <div>\n        <RemoteButton />\n    </div>\n</template>\n```\n\n## Example projects\n\n| Examples                                                                                                                                | Host                                  | Remote                              |\n| --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | ----------------------------------- |\n| [basic-host-remote](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/basic-host-remote)                   | `rollup`+`esm`                        | `rollup`+`esm`                      |\n| [react-in-vue](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/react-in-vue)                             | `vite`+`esm`                          | `vite`+`esm`                        |\n| [simple-react-esm](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/simple-react-esm)                     | `rollup`+`esm`                        | `rollup`+`esm`                      |\n| [simple-react-systemjs](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/simple-react-systemjs)           | `rollup`+`systemjs`                   | `rollup`+`systemjs`                 |\n| [simple-react-webpack](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/simple-react-webpack)             | `rollup`+`systemjs`                   | `webpack`+`systemjs`                |\n| [vue2-demo](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/vue2-demo)                                   | `vite`+`esm`                          | `vite`+`esm`                        |\n| [vue3-advanced-demo](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/vue3-advanced-demo)                 | `vite`+`esm` <br/>`vue-router`/`pinia` | `vite`+`esm`<br/>`vue-router`/`pinia` |\n| [vue3-demo-esm](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/vue3-demo-esm)                           | `vite`+`esm`                          | `vite`+`esm`                        |\n| [vue3-demo-systemjs](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/vue3-demo-systemjs)                 | `vite`+`systemjs`                     | `vite`+`systemjs`                   |\n| [vue3-demo-webpack-esm-esm](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/vue3-demo-webpack-esm-esm)   | `vite/webpack`+`esm`                  | `vite/webpack`+`esm`                |\n| [vue3-demo-webpack-esm-var](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/vue3-demo-webpack-esm-var)   | `vite`+`esm`                          | `webpack`+`var`                     |\n| [vue3-demo-webpack-systemjs](https://github.com/originjs/vite-plugin-federation/tree/main/packages/examples/vue3-demo-webpack-systemjs) | `vite`+`systemjs`                     | `webpack`+`systemjs`                |","readmeFilename":"README.md"}