@fulgurjs/federation 4.3.0 → 5.0.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.
- package/CHANGELOG.md +29 -0
- package/DESIGN.md +1 -0
- package/README.md +35 -42
- package/dist/cli.js +59 -468
- package/dist/context.cjs +5 -5
- package/dist/context.js +16 -8
- package/dist/index.cjs +97 -110
- package/dist/index.d.cts +87 -2
- package/dist/index.d.ts +87 -2
- package/dist/index.js +99 -113
- package/dist/runtime.js +22 -10
- package/dist/vue-adapter.cjs +2 -2
- package/dist/vue-adapter.js +135 -4
- package/docs//350/277/201/347/247/273/346/214/207/345/215/227.md +14 -2
- package/package.json +2 -15
- package/dist/chunk-AD2XIMBJ.js +0 -141
- package/dist/chunk-FMV5BXGS.js +0 -6
- package/dist/chunk-WBCXLR2N.js +0 -46
- package/dist/config.cjs +0 -174
- package/dist/config.d.cts +0 -106
- package/dist/config.d.ts +0 -106
- package/dist/config.js +0 -136
- package/dist/options-CRGpSmVj.d.cts +0 -100
- package/dist/options-CRGpSmVj.d.ts +0 -100
- package/dist/vue.cjs +0 -1293
- package/dist/vue.d.cts +0 -10
- package/dist/vue.d.ts +0 -10
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,91 @@
|
|
|
1
1
|
import { Plugin } from 'vite';
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
interface SharedHint {
|
|
4
|
+
/** 放入共享作用域的本地模块;false 表示不提供本地副本 */
|
|
5
|
+
import?: string | false;
|
|
6
|
+
/** 用于从 package.json 推断 requiredVersion 的包名 */
|
|
7
|
+
packageName?: string;
|
|
8
|
+
/** 期望版本(完整 semver 语法 / false 接受任意) */
|
|
9
|
+
requiredVersion?: string | false;
|
|
10
|
+
/** 只允许单实例 */
|
|
11
|
+
singleton?: boolean;
|
|
12
|
+
/** 版本无效时抛运行时错误(默认:有本地副本且非 singleton 时为 true,对齐 webpack) */
|
|
13
|
+
strictVersion?: boolean;
|
|
14
|
+
/** 在共享作用域中的键(导入名与共享名不同时使用) */
|
|
15
|
+
shareKey?: string;
|
|
16
|
+
/** 共享作用域命名空间 */
|
|
17
|
+
shareScope?: string;
|
|
18
|
+
/** 同步提供(打进初始 chunk,总是被下载) */
|
|
19
|
+
eager?: boolean;
|
|
20
|
+
/** 提供版本显式指定 */
|
|
21
|
+
version?: string;
|
|
22
|
+
}
|
|
23
|
+
type SharedConfig = string[] | Record<string, string | SharedHint>;
|
|
24
|
+
interface ExposeHint {
|
|
25
|
+
import: string;
|
|
26
|
+
/** 稳定 chunk 文件名(不写则内部 id,随构建变化) */
|
|
27
|
+
name?: string;
|
|
28
|
+
}
|
|
29
|
+
interface RemoteEntryConfig {
|
|
30
|
+
external?: string;
|
|
31
|
+
shareScope?: string;
|
|
32
|
+
/** dev 专用地址(缺省回落 external) */
|
|
33
|
+
dev?: string;
|
|
34
|
+
/** prod 专用地址(缺省回落 external) */
|
|
35
|
+
prod?: string;
|
|
36
|
+
timeout?: number;
|
|
37
|
+
retries?: number;
|
|
38
|
+
/** 备用 remoteEntry 地址 */
|
|
39
|
+
fallback?: string[];
|
|
40
|
+
breaker?: {
|
|
41
|
+
threshold?: number;
|
|
42
|
+
resetMs?: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
interface FederationOptions {
|
|
46
|
+
name: string;
|
|
47
|
+
filename?: string;
|
|
48
|
+
exposes?: Record<string, string | ExposeHint>;
|
|
49
|
+
/**
|
|
50
|
+
* 可选远程初始化入口:相对本应用根目录的 TS/JS 模块路径。
|
|
51
|
+
* 模块须默认导出 `setup(context)`(应用级,容器首次加载业务模块前执行一次),
|
|
52
|
+
* 可选具名导出 `onSession(context)`(会话级,按宿主 AppContext.sessionKey 去重执行)。
|
|
53
|
+
* 缺省时无初始化行为(普通 exposes 语义完全不变)。
|
|
54
|
+
*/
|
|
55
|
+
setup?: string;
|
|
56
|
+
remotes?: Record<string, string | RemoteEntryConfig | (() => Promise<any>)>;
|
|
57
|
+
shared?: SharedConfig;
|
|
58
|
+
shareScope?: string;
|
|
59
|
+
runtime?: string | false;
|
|
60
|
+
runtimeChunk?: boolean | 'single';
|
|
61
|
+
manifest?: boolean | Record<string, unknown>;
|
|
62
|
+
runtimePlugins?: string[];
|
|
63
|
+
dts?: boolean | {
|
|
64
|
+
dir?: string;
|
|
65
|
+
mode?: 'source' | 'shim';
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* dev 下自身源码(含依赖,需配合 optimizeDeps.exclude)是否参与 shared 协商改写。
|
|
69
|
+
* 默认:纯 remote(无 remotes)为 true——被宿主消费的组件需协商到宿主实例;
|
|
70
|
+
* 有 remotes 的宿主为 false——自身 import 即自身 provide,避免巨型工程 TLA/循环依赖风险。
|
|
71
|
+
* 双向联邦(宿主同时 expose 组件给更高层消费)显式设 true。
|
|
72
|
+
*/
|
|
73
|
+
devSharedSelf?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* dev 跨源访问策略(插件端点 /@fulgurjs-entry.js、/@fulgurjs-manifest.json 与 server.cors
|
|
76
|
+
* 共用同一来源)。缺省 = '*'(现状兼容:端点与 server.cors 全放开);'*' = 显式全放开(不告警);
|
|
77
|
+
* 数组 = 来源 allowlist(端点按 Origin 反射匹配,不匹配省略头;server.cors 传 { origin: [...] },
|
|
78
|
+
* 用户显式配置的 server.cors 永远优先)。
|
|
79
|
+
*/
|
|
80
|
+
devCorsOrigins?: string[] | '*';
|
|
81
|
+
/**
|
|
82
|
+
* dev manifest 是否携带 fsRoot(remote 根目录本机绝对路径,宿主 dts 类型直连用)。
|
|
83
|
+
* 默认 true(现状兼容);false 时不写入 manifest,宿主 dts 降级为 any 桩并给出提示。
|
|
84
|
+
* fsRoot 是 dev-only 字段,永不进入 prod manifest。
|
|
85
|
+
*/
|
|
86
|
+
devFsRoot?: boolean;
|
|
87
|
+
}
|
|
3
88
|
|
|
4
89
|
declare function federation(options: FederationOptions): Plugin[];
|
|
5
90
|
|
|
6
|
-
export { FederationOptions, federation as default, federation };
|
|
91
|
+
export { type FederationOptions, federation as default, federation };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,91 @@
|
|
|
1
1
|
import { Plugin } from 'vite';
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
interface SharedHint {
|
|
4
|
+
/** 放入共享作用域的本地模块;false 表示不提供本地副本 */
|
|
5
|
+
import?: string | false;
|
|
6
|
+
/** 用于从 package.json 推断 requiredVersion 的包名 */
|
|
7
|
+
packageName?: string;
|
|
8
|
+
/** 期望版本(完整 semver 语法 / false 接受任意) */
|
|
9
|
+
requiredVersion?: string | false;
|
|
10
|
+
/** 只允许单实例 */
|
|
11
|
+
singleton?: boolean;
|
|
12
|
+
/** 版本无效时抛运行时错误(默认:有本地副本且非 singleton 时为 true,对齐 webpack) */
|
|
13
|
+
strictVersion?: boolean;
|
|
14
|
+
/** 在共享作用域中的键(导入名与共享名不同时使用) */
|
|
15
|
+
shareKey?: string;
|
|
16
|
+
/** 共享作用域命名空间 */
|
|
17
|
+
shareScope?: string;
|
|
18
|
+
/** 同步提供(打进初始 chunk,总是被下载) */
|
|
19
|
+
eager?: boolean;
|
|
20
|
+
/** 提供版本显式指定 */
|
|
21
|
+
version?: string;
|
|
22
|
+
}
|
|
23
|
+
type SharedConfig = string[] | Record<string, string | SharedHint>;
|
|
24
|
+
interface ExposeHint {
|
|
25
|
+
import: string;
|
|
26
|
+
/** 稳定 chunk 文件名(不写则内部 id,随构建变化) */
|
|
27
|
+
name?: string;
|
|
28
|
+
}
|
|
29
|
+
interface RemoteEntryConfig {
|
|
30
|
+
external?: string;
|
|
31
|
+
shareScope?: string;
|
|
32
|
+
/** dev 专用地址(缺省回落 external) */
|
|
33
|
+
dev?: string;
|
|
34
|
+
/** prod 专用地址(缺省回落 external) */
|
|
35
|
+
prod?: string;
|
|
36
|
+
timeout?: number;
|
|
37
|
+
retries?: number;
|
|
38
|
+
/** 备用 remoteEntry 地址 */
|
|
39
|
+
fallback?: string[];
|
|
40
|
+
breaker?: {
|
|
41
|
+
threshold?: number;
|
|
42
|
+
resetMs?: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
interface FederationOptions {
|
|
46
|
+
name: string;
|
|
47
|
+
filename?: string;
|
|
48
|
+
exposes?: Record<string, string | ExposeHint>;
|
|
49
|
+
/**
|
|
50
|
+
* 可选远程初始化入口:相对本应用根目录的 TS/JS 模块路径。
|
|
51
|
+
* 模块须默认导出 `setup(context)`(应用级,容器首次加载业务模块前执行一次),
|
|
52
|
+
* 可选具名导出 `onSession(context)`(会话级,按宿主 AppContext.sessionKey 去重执行)。
|
|
53
|
+
* 缺省时无初始化行为(普通 exposes 语义完全不变)。
|
|
54
|
+
*/
|
|
55
|
+
setup?: string;
|
|
56
|
+
remotes?: Record<string, string | RemoteEntryConfig | (() => Promise<any>)>;
|
|
57
|
+
shared?: SharedConfig;
|
|
58
|
+
shareScope?: string;
|
|
59
|
+
runtime?: string | false;
|
|
60
|
+
runtimeChunk?: boolean | 'single';
|
|
61
|
+
manifest?: boolean | Record<string, unknown>;
|
|
62
|
+
runtimePlugins?: string[];
|
|
63
|
+
dts?: boolean | {
|
|
64
|
+
dir?: string;
|
|
65
|
+
mode?: 'source' | 'shim';
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* dev 下自身源码(含依赖,需配合 optimizeDeps.exclude)是否参与 shared 协商改写。
|
|
69
|
+
* 默认:纯 remote(无 remotes)为 true——被宿主消费的组件需协商到宿主实例;
|
|
70
|
+
* 有 remotes 的宿主为 false——自身 import 即自身 provide,避免巨型工程 TLA/循环依赖风险。
|
|
71
|
+
* 双向联邦(宿主同时 expose 组件给更高层消费)显式设 true。
|
|
72
|
+
*/
|
|
73
|
+
devSharedSelf?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* dev 跨源访问策略(插件端点 /@fulgurjs-entry.js、/@fulgurjs-manifest.json 与 server.cors
|
|
76
|
+
* 共用同一来源)。缺省 = '*'(现状兼容:端点与 server.cors 全放开);'*' = 显式全放开(不告警);
|
|
77
|
+
* 数组 = 来源 allowlist(端点按 Origin 反射匹配,不匹配省略头;server.cors 传 { origin: [...] },
|
|
78
|
+
* 用户显式配置的 server.cors 永远优先)。
|
|
79
|
+
*/
|
|
80
|
+
devCorsOrigins?: string[] | '*';
|
|
81
|
+
/**
|
|
82
|
+
* dev manifest 是否携带 fsRoot(remote 根目录本机绝对路径,宿主 dts 类型直连用)。
|
|
83
|
+
* 默认 true(现状兼容);false 时不写入 manifest,宿主 dts 降级为 any 桩并给出提示。
|
|
84
|
+
* fsRoot 是 dev-only 字段,永不进入 prod manifest。
|
|
85
|
+
*/
|
|
86
|
+
devFsRoot?: boolean;
|
|
87
|
+
}
|
|
3
88
|
|
|
4
89
|
declare function federation(options: FederationOptions): Plugin[];
|
|
5
90
|
|
|
6
|
-
export { FederationOptions, federation as default, federation };
|
|
91
|
+
export { type FederationOptions, federation as default, federation };
|