{"_rev":"9-260f1fe524990d225478d8569dc52b1b","time":{"created":"2025-09-06T17:55:59.959Z","modified":"2025-09-06T17:56:00.700Z","2.0.0":"2025-09-06T15:59:01.636Z","1.0.0":"2025-09-06T16:01:04.214Z","1.0.1":"2025-09-06T16:32:41.248Z","1.0.3":"2025-09-06T17:08:47.882Z","1.0.5":"2025-09-06T17:19:11.212Z","1.0.6":"2025-09-06T17:30:39.895Z","1.0.0-beta.1":"2025-09-06T17:56:00.338Z"},"_id":"@anmx/vite-plugin-preamble","name":"@anmx/vite-plugin-preamble","dist-tags":{"latest":"1.0.0-beta.1"},"versions":{"1.0.0-beta.1":{"name":"@anmx/vite-plugin-preamble","version":"1.0.0-beta.1","main":"dist/index.js","module":"dist/index.js","license":"MIT","keywords":["vite","plugin","preamble","module-federation","react","fast-refresh","vite-plugin"],"homepage":"https://github.com/Maple-214/Monorepo/tree/master/packages/vite-plugin-preamble","types":"dist/types/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.js","types":"./dist/types/index.d.ts"}},"publishConfig":{"access":"public"},"devDependencies":{"@types/node":"^20.11.0","@vitest/coverage-v8":"^3.2.4","@vitest/ui":"^3.2.4","tsc-esm-fix":"^3.1.2","typescript":"^5.3.0","vite":"^5.0.0","vitest":"^3.2.4"},"peerDependencies":{"vite":"^5.0.0"},"scripts":{"build":"tsc -p tsconfig.json && tsc-esm-fix dist","test":"vitest run ","test:ui":"vitest --ui","test:coverage":"vitest run --coverage"},"_id":"@anmx/vite-plugin-preamble@1.0.0-beta.1","description":"一个解决Vite在模块联邦（Module Federation）场景下React Fast Refresh preamble检测问题的插件。","_integrity":"sha512-jwe7NXyGI8VhPpZ4spi5rtgjAFwd/KbqQwFjIc2yjn5pIZ8w1b9G6sAD7aFL3xhILOlUFutIFPfdo2xQPFoUzg==","_resolved":"C:\\Users\\MAPLER~1\\AppData\\Local\\Temp\\e4754a3c096460746c81af03638e2a5d\\anmx-vite-plugin-preamble-1.0.0-beta.1.tgz","_from":"file:anmx-vite-plugin-preamble-1.0.0-beta.1.tgz","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-jwe7NXyGI8VhPpZ4spi5rtgjAFwd/KbqQwFjIc2yjn5pIZ8w1b9G6sAD7aFL3xhILOlUFutIFPfdo2xQPFoUzg==","shasum":"44faa9177cb9a7ace11a2edf2daee09b6f792633","tarball":"https://registry.npmjs.org/@anmx/vite-plugin-preamble/-/vite-plugin-preamble-1.0.0-beta.1.tgz","fileCount":10,"unpackedSize":16385,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAaANA7/2XwZ2Uxc36oZ3Z1mW3EY4emZBvZrg3Ej/HeAAiEAs5zKMCwJPgWK3D51DsnY5g8qkLNZhYmAAV9mBKfj0us="}]},"_npmUser":{"name":"maple_214","email":"200214zef@gmail.com"},"directories":{},"maintainers":[{"name":"maple_214","email":"200214zef@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vite-plugin-preamble_1.0.0-beta.1_1757181360112_0.06517422377765114"},"_hasShrinkwrap":false}},"maintainers":[{"name":"maple_214","email":"200214zef@gmail.com"}],"description":"一个解决Vite在模块联邦（Module Federation）场景下React Fast Refresh preamble检测问题的插件。","homepage":"https://github.com/Maple-214/Monorepo/tree/master/packages/vite-plugin-preamble","keywords":["vite","plugin","preamble","module-federation","react","fast-refresh","vite-plugin"],"license":"MIT","readme":"# @anmx/vite-plugin-preamble\n\n一个解决Vite在模块联邦（Module Federation）场景下React Fast Refresh preamble检测问题的插件。\n\n## 问题背景\n\n在使用Vite和模块联邦构建微前端应用时，常常会遇到React组件无法热更新的问题。这是因为在模块联邦环境中，Vite的@vitejs/plugin-react插件生成的preamble代码无法被正确检测和执行。\n\n## 特性\n\n- ✅ 自动为React组件注入必要的preamble代码\n- ✅ 支持自定义配置选项\n- ✅ 提供调试模式，方便排查问题\n- ✅ 兼容Vite 5.x版本\n- ✅ 支持TypeScript类型定义\n\n## 安装\n\n```bash\n# 使用npm\nnpm install @anmx/vite-plugin-preamble --save-dev\n\n# 使用pnpm\npnpm add @anmx/vite-plugin-preamble -D\n\n# 使用yarn\n\nyarn add @anmx/vite-plugin-preamble --dev\n```\n\n## 使用方法\n\n在vite.config.ts中添加插件配置：\n\n```ts\nimport { defineConfig } from 'vite';\nimport { preamblePlugin } from '@anmx/vite-plugin-preamble';\n\n// 或者使用默认导出\n// import preamblePlugin from '@anmx/vite-plugin-preamble';\n\nexport default defineConfig({\n  plugins: [\n    preamblePlugin(),\n    // 其他插件...\n  ],\n});\n```\n\n## 配置选项\n\n插件支持以下配置选项：\n\n```ts\nimport { defineConfig } from 'vite';\nimport { createPreamblePlugin } from '@anmx/vite-plugin-preamble';\n\nexport default defineConfig({\n  plugins: [\n    createPreamblePlugin({\n      // 是否启用调试模式，会在控制台输出preamble注入的相关信息\n      debug: true,\n\n      // 需要注入preamble代码的文件扩展名\n      extensions: ['.tsx', '.jsx'],\n\n      // 自定义JSX注入内容\n      jsxInject: `import React from 'react'`,\n    }),\n  ],\n});\n```\n\n## 类型定义\n\n```ts\ninterface PreamblePluginOptions {\n  debug?: boolean;\n  extensions?: string[];\n  jsxInject?: string;\n}\n```\n\n## 在模块联邦中的使用\n\n在使用模块联邦时，确保在所有需要共享React组件的应用中都配置了此插件：\n\n```ts\n// 主应用的vite.config.ts\nimport { defineConfig } from 'vite';\nimport { federation } from '@module-federation/vite';\nimport { preamblePlugin } from '@anmx/vite-plugin-preamble';\n\nexport default defineConfig({\n  plugins: [\n    preamblePlugin(),\n    federation({\n      name: 'host',\n      remotes: {\n        remoteApp: 'http://localhost:5001/remoteEntry.js',\n      },\n      shared: {\n        react: {\n          singleton: true,\n          requiredVersion: '^18.0.0',\n        },\n        'react-dom': {\n          singleton: true,\n          requiredVersion: '^18.0.0',\n        },\n      },\n    }),\n  ],\n});\n\n// 远程应用的vite.config.ts\nimport { defineConfig } from 'vite';\nimport { federation } from '@module-federation/vite';\nimport { preamblePlugin } from '@anmx/vite-plugin-preamble';\n\nexport default defineConfig({\n  plugins: [\n    preamblePlugin(),\n    federation({\n      name: 'remoteApp',\n      filename: 'remoteEntry.js',\n      exposes: {\n        './App': './src/App.tsx',\n      },\n      shared: {\n        react: {\n          singleton: true,\n          requiredVersion: '^18.0.0',\n        },\n        'react-dom': {\n          singleton: true,\n          requiredVersion: '^18.0.0',\n        },\n      },\n    }),\n  ],\n});\n```\n\n## 开发和测试\n\n```bash\n# 克隆仓库\ngit clone https://github.com/Maple-214/Monorepo.git\ncd Monorepo/packages/@anmx/vite-plugin-preamble\n\n# 安装依赖\npnpm install\n\n# 构建插件\npnpm -F @anmx/vite-plugin-preamble build\n\n# 运行测试\npnpm -F @anmx/vite-plugin-preamble test\n\n# 运行测试并生成覆盖率报告\npnpm -F @anmx/vite-plugin-preamble test:coverage\n```\n\n## License\n\nMIT License © 2025 [Maple-214](https://github.com/Maple-214)\n","readmeFilename":"README.md"}