@fulgurjs/federation 4.0.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,41 +1,33 @@
1
1
  /**
2
- * 通用起步样例:一个宿主 + 一个远程(应用名/路径均为虚构)。
3
- * 用法:npx fulgurjs init --config examples/fulgurjs.config.example.ts
2
+ * 通用起步样例(4.2.0 单项目契约形态):一个远程 + 一个宿主各一份配置。
4
3
  * 完整字段说明见 `fulgurjs init` 生成的起步模板(fulgurjs init --template fulgurjs.config.ts)。
5
4
  */
6
- import { defineRepoConfig } from '@fulgurjs/federation/config'
5
+ import type { FederationOptions } from '@fulgurjs/federation'
7
6
 
8
- export default defineRepoConfig({
9
- root: process.cwd(),
10
- apps: [
11
- {
12
- path: 'apps/host',
13
- name: 'host-app',
14
- port: 5173,
15
- base: '/',
16
- host: {
17
- remotePrefixes: { '/remote-a/': 'remote-a' },
18
- remotes: {
19
- 'remote-a': { dev: 'http://localhost:5174/remote-a', prod: '/remote-a' },
20
- },
21
- pages: [
22
- { route: '/remote-a/home', name: 'RemoteAHome', title: '首页' },
23
- { route: '/remote-a/detail/:id', name: 'RemoteADetail', spec: 'pages/remote-a/detail', title: '详情' },
24
- ],
25
- },
26
- },
27
- {
28
- path: 'apps/remote-a',
29
- name: 'remote-a',
30
- port: 5174,
31
- base: '/remote-a',
32
- remote: {
33
- exposes: {
34
- './pages/remote-a/home': './src/views/Home.vue',
35
- './pages/remote-a/detail': './src/views/Detail.vue',
36
- },
37
- },
38
- },
39
- ],
40
- deploy: { webRoot: '/var/www/your-site', listen: 8080 },
41
- })
7
+ // ── remote-a/fulgurjs.config.ts(远程应用自己的配置)──
8
+ export const remoteAConfig = {
9
+ name: 'remote-a',
10
+ exposes: {
11
+ './pages/remote-a/home': './src/views/Home.vue',
12
+ './pages/remote-a/detail': './src/views/Detail.vue',
13
+ },
14
+ shared: { vue: { singleton: true } },
15
+ } satisfies FederationOptions
16
+
17
+ // ── host/fulgurjs.config.ts(宿主应用自己的配置:消费地址 + 可选页面核对数据)──
18
+ export const hostConfig = {
19
+ name: 'host-app',
20
+ remotes: {
21
+ 'remote-a': { dev: 'http://localhost:5174/remote-a', prod: '/remote-a' },
22
+ },
23
+ shared: { vue: { singleton: true } },
24
+ } satisfies FederationOptions
25
+
26
+ // 宿主页面核对数据(具名导出 hostPages,仅供 CLI explain/check-pages;不是 federation() 参数):
27
+ // export const hostPages = { pages: [{ route: '/remote-a/home', name: 'RemoteAHome', title: '首页' }],
28
+ // remotePrefixes: { '/remote-a/': 'remote-a' } }
29
+
30
+ // 各自 vite.config.ts 里:
31
+ // import federation from '@fulgurjs/federation'
32
+ // import fulgurjsConfig from './fulgurjs.config'
33
+ // plugins: [ ..., federation(fulgurjsConfig) ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fulgurjs/federation",
3
- "version": "4.0.0",
3
+ "version": "4.2.0",
4
4
  "type": "module",
5
5
  "description": "Vite Module Federation with full Webpack MF parity. Dev & production, no compromise.",
6
6
  "license": "MIT",
@@ -1,42 +0,0 @@
1
- // src/vue-adapter.ts
2
- import { defineAsyncComponent, defineComponent, h } from "vue";
3
- var ERROR_STYLE = {
4
- padding: "16px",
5
- border: "1px solid #fde2e2",
6
- borderRadius: "4px",
7
- background: "#fef0f0",
8
- color: "#c45656",
9
- fontSize: "13px",
10
- lineHeight: "1.6"
11
- };
12
- var RemoteErrorPlaceholder = defineComponent({
13
- name: "FulgurjsRemoteError",
14
- props: { error: { type: Object, default: void 0 } },
15
- setup(props) {
16
- return () => {
17
- const err = props.error;
18
- const code = err?.code ?? "UNKNOWN";
19
- const message = err?.message ?? String(props.error ?? "unknown error");
20
- return h("div", { style: ERROR_STYLE }, [
21
- h("p", { style: "margin:0 0 4px;font-weight:600" }, `\u8FDC\u7A0B\u7EC4\u4EF6\u52A0\u8F7D\u5931\u8D25\uFF08\u9519\u8BEF\u7801 ${code}\uFF09`),
22
- h("p", { style: "margin:0 0 8px;word-break:break-all" }, message),
23
- h("p", { style: "margin:0" }, "\u4FEE\u6CD5\uFF1A\u2460 \u6838\u5BF9 spec \u7684\u300C\u8FDC\u7A0B\u540D/expose \u540D\u300D\u4E0E\u8FDC\u7A0B\u5E94\u7528 exposes \u662F\u5426\u4E00\u81F4\uFF08MFU-006/008\uFF09\uFF1B\u2461 \u6838\u5BF9 remotes \u5730\u5740\u7AEF\u53E3\u4E0E\u8FDC\u7A0B\u670D\u52A1\u53EF\u8FBE\u6027\u3001remoteEntry \u662F\u5426\u53EF\u8BBF\u95EE\uFF08MFU-001\uFF09\uFF1B\u2462 \u67E5\u770B window \u7684 fulgurjs:error \u4E8B\u4EF6\u4E0E console \u540C\u6E90\u9519\u8BEF\u5B9A\u4F4D\u6839\u56E0\u3002")
24
- ]);
25
- };
26
- }
27
- });
28
- function createRemoteComponent(loadRemote) {
29
- return function remoteComponent(spec, opts = {}) {
30
- return defineAsyncComponent({
31
- loader: () => loadRemote(spec, { retries: opts.retries }).then((m) => m.default ?? m),
32
- loadingComponent: opts.loadingComponent,
33
- errorComponent: opts.errorComponent ?? RemoteErrorPlaceholder,
34
- delay: opts.delay,
35
- timeout: opts.timeout
36
- });
37
- };
38
- }
39
-
40
- export {
41
- createRemoteComponent
42
- };