@maxax/x-plugins-micro 1.0.1 → 1.0.2

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/dist/index.cjs CHANGED
@@ -27,10 +27,8 @@ __export(index_exports, {
27
27
  hasMicroApps: () => hasMicroApps,
28
28
  hasValidEntry: () => hasValidEntry,
29
29
  microAppManager: () => microAppManager,
30
- resolveMountContainer: () => resolveMountContainer,
31
30
  setupMicroPluginApps: () => setupMicroPluginApps,
32
- startMicroPluginApps: () => startMicroPluginApps,
33
- useMicroAppLifecycle: () => useMicroAppLifecycle
31
+ startMicroPluginApps: () => startMicroPluginApps
34
32
  });
35
33
  module.exports = __toCommonJS(index_exports);
36
34
 
@@ -185,46 +183,6 @@ function getMicroApps() {
185
183
  function hasValidEntry(app) {
186
184
  return typeof app.entry === "string" && app.entry.length > 0;
187
185
  }
188
-
189
- // src/use-micro-app.ts
190
- var import_helper = require("vite-plugin-qiankun/dist/helper");
191
- function resolveMountContainer(container) {
192
- if (!container) {
193
- return document.querySelector("#app");
194
- }
195
- return container;
196
- }
197
- function useMicroAppLifecycle({ mount, unmount, update, bootstrap }) {
198
- const mountMicroApp = async (props) => {
199
- await mount(props);
200
- };
201
- const unmountMicroApp = async () => {
202
- await unmount();
203
- };
204
- const updateMicroApp = async (props) => {
205
- await (update == null ? void 0 : update(props));
206
- };
207
- const bootstrapMicroApp = async () => {
208
- await (bootstrap == null ? void 0 : bootstrap());
209
- };
210
- if (!import_helper.qiankunWindow.__POWERED_BY_QIANKUN__) {
211
- void mountMicroApp();
212
- }
213
- (0, import_helper.renderWithQiankun)({
214
- async bootstrap() {
215
- await bootstrapMicroApp();
216
- },
217
- async mount(props) {
218
- await mountMicroApp(props);
219
- },
220
- async unmount() {
221
- await unmountMicroApp();
222
- },
223
- async update(props) {
224
- await updateMicroApp(props);
225
- }
226
- });
227
- }
228
186
  // Annotate the CommonJS export names for ESM import in node:
229
187
  0 && (module.exports = {
230
188
  MicroAppManager,
@@ -232,9 +190,7 @@ function useMicroAppLifecycle({ mount, unmount, update, bootstrap }) {
232
190
  hasMicroApps,
233
191
  hasValidEntry,
234
192
  microAppManager,
235
- resolveMountContainer,
236
193
  setupMicroPluginApps,
237
- startMicroPluginApps,
238
- useMicroAppLifecycle
194
+ startMicroPluginApps
239
195
  });
240
196
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/setup.ts","../src/use-micro-app.ts"],"sourcesContent":["export * from './setup'\nexport * from './types'\nexport * from './use-micro-app'\n","/**\n * 微前端应用设置和启动模块\n * @module setup\n */\n\nimport type { FrameworkConfiguration } from 'qiankun'\nimport { addGlobalUncaughtErrorHandler, registerMicroApps, start } from 'qiankun'\nimport type { MicroAppDescriptor, MicroAppSetupOptions, MicroAppStartOptions } from './types'\n\n/**\n * 微前端管理器类\n * 负责管理微应用的注册、启动和生命周期\n */\nexport class MicroAppManager {\n /** 是否已注册微应用 */\n private hasRegistered = false\n\n /** 是否已启动微前端框架 */\n private hasStarted = false\n\n /** 微应用配置列表 */\n private apps: MicroAppDescriptor[] = []\n\n /** 启动配置选项 */\n private startOptions: MicroAppStartOptions = {}\n\n /** 自定义加载器函数 */\n private loader?: (loading: boolean) => void\n\n /** 自定义错误处理函数 */\n private onError?: (event: Event | string) => void\n\n /**\n * 检查是否有有效的微应用配置\n * @returns 是否存在有效的微应用\n */\n hasMicroApps(): boolean {\n return this.apps.length > 0\n }\n\n /**\n * 过滤出有效的微应用配置(必须有 entry)\n * @param apps 微应用配置列表\n * @returns 有效的微应用配置列表\n */\n private filterValidApps(apps: MicroAppDescriptor[]): MicroAppDescriptor[] {\n return apps.filter((app): app is MicroAppDescriptor & { entry: string } => {\n return typeof app.entry === 'string' && app.entry.length > 0\n })\n }\n\n /**\n * 设置微前端应用\n * @param options 设置选项\n */\n setup(options: MicroAppSetupOptions): void {\n if (this.hasRegistered) {\n console.warn('[x-micro-plugin] 微应用已经注册,跳过重复注册')\n return\n }\n\n // 过滤出有效的微应用配置\n this.apps = this.filterValidApps(options.apps)\n\n if (!this.hasMicroApps()) {\n console.warn('[x-micro-plugin] 没有有效的微应用配置,跳过注册')\n return\n }\n\n // 保存配置选项\n this.startOptions = options.startOptions || {}\n this.loader = options.loader\n this.onError = options.onError\n\n // 注册微应用\n this.registerMicroApps()\n\n // 设置全局错误处理\n this.setupErrorHandler()\n\n this.hasRegistered = true\n }\n\n /**\n * 注册微应用到 qiankun\n */\n private registerMicroApps(): void {\n registerMicroApps(\n this.apps.map(app => ({\n name: app.name,\n entry: app.entry!,\n container: `#${app.containerId}`,\n activeRule: app.activeRule,\n props: {\n ...app.props\n },\n loader: (loading: boolean) => {\n // 调用自定义加载器\n this.loader?.(loading)\n }\n }))\n )\n }\n\n /**\n * 设置全局错误处理\n */\n private setupErrorHandler(): void {\n addGlobalUncaughtErrorHandler((event: Event | string) => {\n // 调用自定义错误处理函数\n if (this.onError) {\n this.onError(event)\n } else {\n // 默认错误处理\n console.error('[x-micro-plugin] 微应用加载错误', event)\n // 尝试使用全局消息提示\n if (typeof window !== 'undefined' && (window as any).$message) {\n console.error('子应用加载失败,请稍后重试')\n }\n }\n })\n }\n\n /**\n * 启动微前端框架\n */\n start(): void {\n if (!this.hasRegistered) {\n console.warn('[x-micro-plugin] 微应用尚未注册,请先调用 setup() 方法')\n return\n }\n\n if (this.hasStarted) {\n console.warn('[x-micro-plugin] 微前端框架已经启动,跳过重复启动')\n return\n }\n\n const startOpts: FrameworkConfiguration = {\n prefetch: this.startOptions.prefetch !== false, // 默认启用预加载\n sandbox: {\n experimentalStyleIsolation: this.startOptions.sandbox?.experimentalStyleIsolation ?? true,\n strictStyleIsolation: this.startOptions.sandbox?.strictStyleIsolation ?? false,\n ...this.startOptions.sandbox\n },\n ...this.startOptions\n }\n\n start(startOpts)\n\n this.hasStarted = true\n }\n\n /**\n * 获取已注册的微应用配置列表\n * @returns 微应用配置列表的只读副本\n */\n getApps(): ReadonlyArray<MicroAppDescriptor> {\n return [...this.apps]\n }\n\n /**\n * 重置管理器状态(主要用于测试)\n */\n reset(): void {\n this.hasRegistered = false\n this.hasStarted = false\n this.apps = []\n this.startOptions = {}\n this.loader = undefined\n this.onError = undefined\n }\n}\n\n/**\n * 全局微前端管理器实例\n */\nexport const microAppManager = new MicroAppManager()\n\n/**\n * 设置微前端应用(便捷函数)\n * @param options 设置选项\n */\nexport function setupMicroPluginApps(options: MicroAppSetupOptions): void {\n microAppManager.setup(options)\n}\n\n/**\n * 启动微前端框架(便捷函数)\n */\nexport function startMicroPluginApps(): void {\n microAppManager.start()\n}\n\n/**\n * 检查是否有微应用(便捷函数)\n * @returns 是否存在微应用\n */\nexport function hasMicroApps(): boolean {\n return microAppManager.hasMicroApps()\n}\n\n/**\n * 获取微应用配置列表(便捷函数)\n * @returns 微应用配置列表\n */\nexport function getMicroApps(): ReadonlyArray<MicroAppDescriptor> {\n return microAppManager.getApps()\n}\n\n/**\n * 类型守卫:检查微应用是否有有效的入口地址\n * @param app 微应用描述符\n * @returns 是否为有效的微应用(有入口地址)\n */\nexport function hasValidEntry(app: MicroAppDescriptor): app is MicroAppDescriptor & { entry: string } {\n return typeof app.entry === 'string' && app.entry.length > 0\n}\n","import type { QiankunLifeCycle, QiankunProps } from 'vite-plugin-qiankun/dist/helper'\nimport { qiankunWindow, renderWithQiankun } from 'vite-plugin-qiankun/dist/helper'\n\ninterface UseMicroAppOptions {\n /** Mount logic for the micro app, receives Qiankun props when running under Qiankun */\n mount: (props?: QiankunProps) => Promise<void> | void\n /** Cleanup logic when Qiankun unmounts the micro app */\n unmount: () => Promise<void> | void\n /** Update logic for the micro app */\n update?: (props?: QiankunProps) => Promise<void> | void\n /** Bootstrap logic for the micro app */\n bootstrap?: () => Promise<void> | void\n}\n\n/**\n * Resolve the mount container for the micro app\n * @param container - The container element to mount the micro app to\n * @returns The resolved container element\n */\nexport function resolveMountContainer(container?: Element | null): Element {\n if (!container) {\n return document.querySelector<HTMLElement>('#app')!\n }\n return container\n}\n\n/**\n * Encapsulate Qiankun micro-frontend lifecycle wiring into a reusable hook\n */\nexport function useMicroAppLifecycle({ mount, unmount, update, bootstrap }: UseMicroAppOptions) {\n /** Mount logic for the micro app */\n const mountMicroApp = async (props?: QiankunProps) => {\n await mount(props)\n }\n\n /** Cleanup logic when Qiankun unmounts the micro app */\n const unmountMicroApp = async () => {\n await unmount()\n }\n\n /** Update logic for the micro app */\n const updateMicroApp = async (props?: QiankunProps) => {\n await update?.(props)\n }\n\n /** Bootstrap logic for the micro app */\n const bootstrapMicroApp = async () => {\n await bootstrap?.()\n }\n\n if (!qiankunWindow.__POWERED_BY_QIANKUN__) {\n void mountMicroApp()\n }\n\n renderWithQiankun({\n async bootstrap() {\n await bootstrapMicroApp()\n },\n async mount(props) {\n await mountMicroApp(props)\n },\n async unmount() {\n await unmountMicroApp()\n },\n async update(props) {\n await updateMicroApp(props)\n }\n })\n}\n\nexport type { QiankunLifeCycle, QiankunProps }\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/setup.ts"],"sourcesContent":["export * from './setup'\nexport * from './types'\n","/**\n * 微前端应用设置和启动模块\n * @module setup\n */\n\nimport type { FrameworkConfiguration } from 'qiankun'\nimport { addGlobalUncaughtErrorHandler, registerMicroApps, start } from 'qiankun'\nimport type { MicroAppDescriptor, MicroAppSetupOptions, MicroAppStartOptions } from './types'\n\n/**\n * 微前端管理器类\n * 负责管理微应用的注册、启动和生命周期\n */\nexport class MicroAppManager {\n /** 是否已注册微应用 */\n private hasRegistered = false\n\n /** 是否已启动微前端框架 */\n private hasStarted = false\n\n /** 微应用配置列表 */\n private apps: MicroAppDescriptor[] = []\n\n /** 启动配置选项 */\n private startOptions: MicroAppStartOptions = {}\n\n /** 自定义加载器函数 */\n private loader?: (loading: boolean) => void\n\n /** 自定义错误处理函数 */\n private onError?: (event: Event | string) => void\n\n /**\n * 检查是否有有效的微应用配置\n * @returns 是否存在有效的微应用\n */\n hasMicroApps(): boolean {\n return this.apps.length > 0\n }\n\n /**\n * 过滤出有效的微应用配置(必须有 entry)\n * @param apps 微应用配置列表\n * @returns 有效的微应用配置列表\n */\n private filterValidApps(apps: MicroAppDescriptor[]): MicroAppDescriptor[] {\n return apps.filter((app): app is MicroAppDescriptor & { entry: string } => {\n return typeof app.entry === 'string' && app.entry.length > 0\n })\n }\n\n /**\n * 设置微前端应用\n * @param options 设置选项\n */\n setup(options: MicroAppSetupOptions): void {\n if (this.hasRegistered) {\n console.warn('[x-micro-plugin] 微应用已经注册,跳过重复注册')\n return\n }\n\n // 过滤出有效的微应用配置\n this.apps = this.filterValidApps(options.apps)\n\n if (!this.hasMicroApps()) {\n console.warn('[x-micro-plugin] 没有有效的微应用配置,跳过注册')\n return\n }\n\n // 保存配置选项\n this.startOptions = options.startOptions || {}\n this.loader = options.loader\n this.onError = options.onError\n\n // 注册微应用\n this.registerMicroApps()\n\n // 设置全局错误处理\n this.setupErrorHandler()\n\n this.hasRegistered = true\n }\n\n /**\n * 注册微应用到 qiankun\n */\n private registerMicroApps(): void {\n registerMicroApps(\n this.apps.map(app => ({\n name: app.name,\n entry: app.entry!,\n container: `#${app.containerId}`,\n activeRule: app.activeRule,\n props: {\n ...app.props\n },\n loader: (loading: boolean) => {\n // 调用自定义加载器\n this.loader?.(loading)\n }\n }))\n )\n }\n\n /**\n * 设置全局错误处理\n */\n private setupErrorHandler(): void {\n addGlobalUncaughtErrorHandler((event: Event | string) => {\n // 调用自定义错误处理函数\n if (this.onError) {\n this.onError(event)\n } else {\n // 默认错误处理\n console.error('[x-micro-plugin] 微应用加载错误', event)\n // 尝试使用全局消息提示\n if (typeof window !== 'undefined' && (window as any).$message) {\n console.error('子应用加载失败,请稍后重试')\n }\n }\n })\n }\n\n /**\n * 启动微前端框架\n */\n start(): void {\n if (!this.hasRegistered) {\n console.warn('[x-micro-plugin] 微应用尚未注册,请先调用 setup() 方法')\n return\n }\n\n if (this.hasStarted) {\n console.warn('[x-micro-plugin] 微前端框架已经启动,跳过重复启动')\n return\n }\n\n const startOpts: FrameworkConfiguration = {\n prefetch: this.startOptions.prefetch !== false, // 默认启用预加载\n sandbox: {\n experimentalStyleIsolation: this.startOptions.sandbox?.experimentalStyleIsolation ?? true,\n strictStyleIsolation: this.startOptions.sandbox?.strictStyleIsolation ?? false,\n ...this.startOptions.sandbox\n },\n ...this.startOptions\n }\n\n start(startOpts)\n\n this.hasStarted = true\n }\n\n /**\n * 获取已注册的微应用配置列表\n * @returns 微应用配置列表的只读副本\n */\n getApps(): ReadonlyArray<MicroAppDescriptor> {\n return [...this.apps]\n }\n\n /**\n * 重置管理器状态(主要用于测试)\n */\n reset(): void {\n this.hasRegistered = false\n this.hasStarted = false\n this.apps = []\n this.startOptions = {}\n this.loader = undefined\n this.onError = undefined\n }\n}\n\n/**\n * 全局微前端管理器实例\n */\nexport const microAppManager = new MicroAppManager()\n\n/**\n * 设置微前端应用(便捷函数)\n * @param options 设置选项\n */\nexport function setupMicroPluginApps(options: MicroAppSetupOptions): void {\n microAppManager.setup(options)\n}\n\n/**\n * 启动微前端框架(便捷函数)\n */\nexport function startMicroPluginApps(): void {\n microAppManager.start()\n}\n\n/**\n * 检查是否有微应用(便捷函数)\n * @returns 是否存在微应用\n */\nexport function hasMicroApps(): boolean {\n return microAppManager.hasMicroApps()\n}\n\n/**\n * 获取微应用配置列表(便捷函数)\n * @returns 微应用配置列表\n */\nexport function getMicroApps(): ReadonlyArray<MicroAppDescriptor> {\n return microAppManager.getApps()\n}\n\n/**\n * 类型守卫:检查微应用是否有有效的入口地址\n * @param app 微应用描述符\n * @returns 是否为有效的微应用(有入口地址)\n */\nexport function hasValidEntry(app: MicroAppDescriptor): app is MicroAppDescriptor & { entry: string } {\n return typeof app.entry === 'string' && app.entry.length > 0\n}\n"],"mappings":"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","names":[]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,3 @@
1
- import { QiankunProps } from 'vite-plugin-qiankun/dist/helper';
2
- export { QiankunLifeCycle, QiankunProps } from 'vite-plugin-qiankun/dist/helper';
3
-
4
1
  /**
5
2
  * 微前端应用描述符类型定义
6
3
  * @module types
@@ -145,25 +142,4 @@ declare function hasValidEntry(app: MicroAppDescriptor): app is MicroAppDescript
145
142
  entry: string;
146
143
  };
147
144
 
148
- interface UseMicroAppOptions {
149
- /** Mount logic for the micro app, receives Qiankun props when running under Qiankun */
150
- mount: (props?: QiankunProps) => Promise<void> | void;
151
- /** Cleanup logic when Qiankun unmounts the micro app */
152
- unmount: () => Promise<void> | void;
153
- /** Update logic for the micro app */
154
- update?: (props?: QiankunProps) => Promise<void> | void;
155
- /** Bootstrap logic for the micro app */
156
- bootstrap?: () => Promise<void> | void;
157
- }
158
- /**
159
- * Resolve the mount container for the micro app
160
- * @param container - The container element to mount the micro app to
161
- * @returns The resolved container element
162
- */
163
- declare function resolveMountContainer(container?: Element | null): Element;
164
- /**
165
- * Encapsulate Qiankun micro-frontend lifecycle wiring into a reusable hook
166
- */
167
- declare function useMicroAppLifecycle({ mount, unmount, update, bootstrap }: UseMicroAppOptions): void;
168
-
169
- export { type MicroAppDescriptor, MicroAppManager, type MicroAppSetupOptions, type MicroAppStartOptions, getMicroApps, hasMicroApps, hasValidEntry, microAppManager, resolveMountContainer, setupMicroPluginApps, startMicroPluginApps, useMicroAppLifecycle };
145
+ export { type MicroAppDescriptor, MicroAppManager, type MicroAppSetupOptions, type MicroAppStartOptions, getMicroApps, hasMicroApps, hasValidEntry, microAppManager, setupMicroPluginApps, startMicroPluginApps };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,3 @@
1
- import { QiankunProps } from 'vite-plugin-qiankun/dist/helper';
2
- export { QiankunLifeCycle, QiankunProps } from 'vite-plugin-qiankun/dist/helper';
3
-
4
1
  /**
5
2
  * 微前端应用描述符类型定义
6
3
  * @module types
@@ -145,25 +142,4 @@ declare function hasValidEntry(app: MicroAppDescriptor): app is MicroAppDescript
145
142
  entry: string;
146
143
  };
147
144
 
148
- interface UseMicroAppOptions {
149
- /** Mount logic for the micro app, receives Qiankun props when running under Qiankun */
150
- mount: (props?: QiankunProps) => Promise<void> | void;
151
- /** Cleanup logic when Qiankun unmounts the micro app */
152
- unmount: () => Promise<void> | void;
153
- /** Update logic for the micro app */
154
- update?: (props?: QiankunProps) => Promise<void> | void;
155
- /** Bootstrap logic for the micro app */
156
- bootstrap?: () => Promise<void> | void;
157
- }
158
- /**
159
- * Resolve the mount container for the micro app
160
- * @param container - The container element to mount the micro app to
161
- * @returns The resolved container element
162
- */
163
- declare function resolveMountContainer(container?: Element | null): Element;
164
- /**
165
- * Encapsulate Qiankun micro-frontend lifecycle wiring into a reusable hook
166
- */
167
- declare function useMicroAppLifecycle({ mount, unmount, update, bootstrap }: UseMicroAppOptions): void;
168
-
169
- export { type MicroAppDescriptor, MicroAppManager, type MicroAppSetupOptions, type MicroAppStartOptions, getMicroApps, hasMicroApps, hasValidEntry, microAppManager, resolveMountContainer, setupMicroPluginApps, startMicroPluginApps, useMicroAppLifecycle };
145
+ export { type MicroAppDescriptor, MicroAppManager, type MicroAppSetupOptions, type MicroAppStartOptions, getMicroApps, hasMicroApps, hasValidEntry, microAppManager, setupMicroPluginApps, startMicroPluginApps };
package/dist/index.mjs CHANGED
@@ -153,55 +153,13 @@ function getMicroApps() {
153
153
  function hasValidEntry(app) {
154
154
  return typeof app.entry === "string" && app.entry.length > 0;
155
155
  }
156
-
157
- // src/use-micro-app.ts
158
- import { qiankunWindow, renderWithQiankun } from "vite-plugin-qiankun/dist/helper";
159
- function resolveMountContainer(container) {
160
- if (!container) {
161
- return document.querySelector("#app");
162
- }
163
- return container;
164
- }
165
- function useMicroAppLifecycle({ mount, unmount, update, bootstrap }) {
166
- const mountMicroApp = async (props) => {
167
- await mount(props);
168
- };
169
- const unmountMicroApp = async () => {
170
- await unmount();
171
- };
172
- const updateMicroApp = async (props) => {
173
- await (update == null ? void 0 : update(props));
174
- };
175
- const bootstrapMicroApp = async () => {
176
- await (bootstrap == null ? void 0 : bootstrap());
177
- };
178
- if (!qiankunWindow.__POWERED_BY_QIANKUN__) {
179
- void mountMicroApp();
180
- }
181
- renderWithQiankun({
182
- async bootstrap() {
183
- await bootstrapMicroApp();
184
- },
185
- async mount(props) {
186
- await mountMicroApp(props);
187
- },
188
- async unmount() {
189
- await unmountMicroApp();
190
- },
191
- async update(props) {
192
- await updateMicroApp(props);
193
- }
194
- });
195
- }
196
156
  export {
197
157
  MicroAppManager,
198
158
  getMicroApps,
199
159
  hasMicroApps,
200
160
  hasValidEntry,
201
161
  microAppManager,
202
- resolveMountContainer,
203
162
  setupMicroPluginApps,
204
- startMicroPluginApps,
205
- useMicroAppLifecycle
163
+ startMicroPluginApps
206
164
  };
207
165
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/setup.ts","../src/use-micro-app.ts"],"sourcesContent":["/**\n * 微前端应用设置和启动模块\n * @module setup\n */\n\nimport type { FrameworkConfiguration } from 'qiankun'\nimport { addGlobalUncaughtErrorHandler, registerMicroApps, start } from 'qiankun'\nimport type { MicroAppDescriptor, MicroAppSetupOptions, MicroAppStartOptions } from './types'\n\n/**\n * 微前端管理器类\n * 负责管理微应用的注册、启动和生命周期\n */\nexport class MicroAppManager {\n /** 是否已注册微应用 */\n private hasRegistered = false\n\n /** 是否已启动微前端框架 */\n private hasStarted = false\n\n /** 微应用配置列表 */\n private apps: MicroAppDescriptor[] = []\n\n /** 启动配置选项 */\n private startOptions: MicroAppStartOptions = {}\n\n /** 自定义加载器函数 */\n private loader?: (loading: boolean) => void\n\n /** 自定义错误处理函数 */\n private onError?: (event: Event | string) => void\n\n /**\n * 检查是否有有效的微应用配置\n * @returns 是否存在有效的微应用\n */\n hasMicroApps(): boolean {\n return this.apps.length > 0\n }\n\n /**\n * 过滤出有效的微应用配置(必须有 entry)\n * @param apps 微应用配置列表\n * @returns 有效的微应用配置列表\n */\n private filterValidApps(apps: MicroAppDescriptor[]): MicroAppDescriptor[] {\n return apps.filter((app): app is MicroAppDescriptor & { entry: string } => {\n return typeof app.entry === 'string' && app.entry.length > 0\n })\n }\n\n /**\n * 设置微前端应用\n * @param options 设置选项\n */\n setup(options: MicroAppSetupOptions): void {\n if (this.hasRegistered) {\n console.warn('[x-micro-plugin] 微应用已经注册,跳过重复注册')\n return\n }\n\n // 过滤出有效的微应用配置\n this.apps = this.filterValidApps(options.apps)\n\n if (!this.hasMicroApps()) {\n console.warn('[x-micro-plugin] 没有有效的微应用配置,跳过注册')\n return\n }\n\n // 保存配置选项\n this.startOptions = options.startOptions || {}\n this.loader = options.loader\n this.onError = options.onError\n\n // 注册微应用\n this.registerMicroApps()\n\n // 设置全局错误处理\n this.setupErrorHandler()\n\n this.hasRegistered = true\n }\n\n /**\n * 注册微应用到 qiankun\n */\n private registerMicroApps(): void {\n registerMicroApps(\n this.apps.map(app => ({\n name: app.name,\n entry: app.entry!,\n container: `#${app.containerId}`,\n activeRule: app.activeRule,\n props: {\n ...app.props\n },\n loader: (loading: boolean) => {\n // 调用自定义加载器\n this.loader?.(loading)\n }\n }))\n )\n }\n\n /**\n * 设置全局错误处理\n */\n private setupErrorHandler(): void {\n addGlobalUncaughtErrorHandler((event: Event | string) => {\n // 调用自定义错误处理函数\n if (this.onError) {\n this.onError(event)\n } else {\n // 默认错误处理\n console.error('[x-micro-plugin] 微应用加载错误', event)\n // 尝试使用全局消息提示\n if (typeof window !== 'undefined' && (window as any).$message) {\n console.error('子应用加载失败,请稍后重试')\n }\n }\n })\n }\n\n /**\n * 启动微前端框架\n */\n start(): void {\n if (!this.hasRegistered) {\n console.warn('[x-micro-plugin] 微应用尚未注册,请先调用 setup() 方法')\n return\n }\n\n if (this.hasStarted) {\n console.warn('[x-micro-plugin] 微前端框架已经启动,跳过重复启动')\n return\n }\n\n const startOpts: FrameworkConfiguration = {\n prefetch: this.startOptions.prefetch !== false, // 默认启用预加载\n sandbox: {\n experimentalStyleIsolation: this.startOptions.sandbox?.experimentalStyleIsolation ?? true,\n strictStyleIsolation: this.startOptions.sandbox?.strictStyleIsolation ?? false,\n ...this.startOptions.sandbox\n },\n ...this.startOptions\n }\n\n start(startOpts)\n\n this.hasStarted = true\n }\n\n /**\n * 获取已注册的微应用配置列表\n * @returns 微应用配置列表的只读副本\n */\n getApps(): ReadonlyArray<MicroAppDescriptor> {\n return [...this.apps]\n }\n\n /**\n * 重置管理器状态(主要用于测试)\n */\n reset(): void {\n this.hasRegistered = false\n this.hasStarted = false\n this.apps = []\n this.startOptions = {}\n this.loader = undefined\n this.onError = undefined\n }\n}\n\n/**\n * 全局微前端管理器实例\n */\nexport const microAppManager = new MicroAppManager()\n\n/**\n * 设置微前端应用(便捷函数)\n * @param options 设置选项\n */\nexport function setupMicroPluginApps(options: MicroAppSetupOptions): void {\n microAppManager.setup(options)\n}\n\n/**\n * 启动微前端框架(便捷函数)\n */\nexport function startMicroPluginApps(): void {\n microAppManager.start()\n}\n\n/**\n * 检查是否有微应用(便捷函数)\n * @returns 是否存在微应用\n */\nexport function hasMicroApps(): boolean {\n return microAppManager.hasMicroApps()\n}\n\n/**\n * 获取微应用配置列表(便捷函数)\n * @returns 微应用配置列表\n */\nexport function getMicroApps(): ReadonlyArray<MicroAppDescriptor> {\n return microAppManager.getApps()\n}\n\n/**\n * 类型守卫:检查微应用是否有有效的入口地址\n * @param app 微应用描述符\n * @returns 是否为有效的微应用(有入口地址)\n */\nexport function hasValidEntry(app: MicroAppDescriptor): app is MicroAppDescriptor & { entry: string } {\n return typeof app.entry === 'string' && app.entry.length > 0\n}\n","import type { QiankunLifeCycle, QiankunProps } from 'vite-plugin-qiankun/dist/helper'\nimport { qiankunWindow, renderWithQiankun } from 'vite-plugin-qiankun/dist/helper'\n\ninterface UseMicroAppOptions {\n /** Mount logic for the micro app, receives Qiankun props when running under Qiankun */\n mount: (props?: QiankunProps) => Promise<void> | void\n /** Cleanup logic when Qiankun unmounts the micro app */\n unmount: () => Promise<void> | void\n /** Update logic for the micro app */\n update?: (props?: QiankunProps) => Promise<void> | void\n /** Bootstrap logic for the micro app */\n bootstrap?: () => Promise<void> | void\n}\n\n/**\n * Resolve the mount container for the micro app\n * @param container - The container element to mount the micro app to\n * @returns The resolved container element\n */\nexport function resolveMountContainer(container?: Element | null): Element {\n if (!container) {\n return document.querySelector<HTMLElement>('#app')!\n }\n return container\n}\n\n/**\n * Encapsulate Qiankun micro-frontend lifecycle wiring into a reusable hook\n */\nexport function useMicroAppLifecycle({ mount, unmount, update, bootstrap }: UseMicroAppOptions) {\n /** Mount logic for the micro app */\n const mountMicroApp = async (props?: QiankunProps) => {\n await mount(props)\n }\n\n /** Cleanup logic when Qiankun unmounts the micro app */\n const unmountMicroApp = async () => {\n await unmount()\n }\n\n /** Update logic for the micro app */\n const updateMicroApp = async (props?: QiankunProps) => {\n await update?.(props)\n }\n\n /** Bootstrap logic for the micro app */\n const bootstrapMicroApp = async () => {\n await bootstrap?.()\n }\n\n if (!qiankunWindow.__POWERED_BY_QIANKUN__) {\n void mountMicroApp()\n }\n\n renderWithQiankun({\n async bootstrap() {\n await bootstrapMicroApp()\n },\n async mount(props) {\n await mountMicroApp(props)\n },\n async unmount() {\n await unmountMicroApp()\n },\n async update(props) {\n await updateMicroApp(props)\n }\n })\n}\n\nexport type { QiankunLifeCycle, QiankunProps }\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/setup.ts"],"sourcesContent":["/**\n * 微前端应用设置和启动模块\n * @module setup\n */\n\nimport type { FrameworkConfiguration } from 'qiankun'\nimport { addGlobalUncaughtErrorHandler, registerMicroApps, start } from 'qiankun'\nimport type { MicroAppDescriptor, MicroAppSetupOptions, MicroAppStartOptions } from './types'\n\n/**\n * 微前端管理器类\n * 负责管理微应用的注册、启动和生命周期\n */\nexport class MicroAppManager {\n /** 是否已注册微应用 */\n private hasRegistered = false\n\n /** 是否已启动微前端框架 */\n private hasStarted = false\n\n /** 微应用配置列表 */\n private apps: MicroAppDescriptor[] = []\n\n /** 启动配置选项 */\n private startOptions: MicroAppStartOptions = {}\n\n /** 自定义加载器函数 */\n private loader?: (loading: boolean) => void\n\n /** 自定义错误处理函数 */\n private onError?: (event: Event | string) => void\n\n /**\n * 检查是否有有效的微应用配置\n * @returns 是否存在有效的微应用\n */\n hasMicroApps(): boolean {\n return this.apps.length > 0\n }\n\n /**\n * 过滤出有效的微应用配置(必须有 entry)\n * @param apps 微应用配置列表\n * @returns 有效的微应用配置列表\n */\n private filterValidApps(apps: MicroAppDescriptor[]): MicroAppDescriptor[] {\n return apps.filter((app): app is MicroAppDescriptor & { entry: string } => {\n return typeof app.entry === 'string' && app.entry.length > 0\n })\n }\n\n /**\n * 设置微前端应用\n * @param options 设置选项\n */\n setup(options: MicroAppSetupOptions): void {\n if (this.hasRegistered) {\n console.warn('[x-micro-plugin] 微应用已经注册,跳过重复注册')\n return\n }\n\n // 过滤出有效的微应用配置\n this.apps = this.filterValidApps(options.apps)\n\n if (!this.hasMicroApps()) {\n console.warn('[x-micro-plugin] 没有有效的微应用配置,跳过注册')\n return\n }\n\n // 保存配置选项\n this.startOptions = options.startOptions || {}\n this.loader = options.loader\n this.onError = options.onError\n\n // 注册微应用\n this.registerMicroApps()\n\n // 设置全局错误处理\n this.setupErrorHandler()\n\n this.hasRegistered = true\n }\n\n /**\n * 注册微应用到 qiankun\n */\n private registerMicroApps(): void {\n registerMicroApps(\n this.apps.map(app => ({\n name: app.name,\n entry: app.entry!,\n container: `#${app.containerId}`,\n activeRule: app.activeRule,\n props: {\n ...app.props\n },\n loader: (loading: boolean) => {\n // 调用自定义加载器\n this.loader?.(loading)\n }\n }))\n )\n }\n\n /**\n * 设置全局错误处理\n */\n private setupErrorHandler(): void {\n addGlobalUncaughtErrorHandler((event: Event | string) => {\n // 调用自定义错误处理函数\n if (this.onError) {\n this.onError(event)\n } else {\n // 默认错误处理\n console.error('[x-micro-plugin] 微应用加载错误', event)\n // 尝试使用全局消息提示\n if (typeof window !== 'undefined' && (window as any).$message) {\n console.error('子应用加载失败,请稍后重试')\n }\n }\n })\n }\n\n /**\n * 启动微前端框架\n */\n start(): void {\n if (!this.hasRegistered) {\n console.warn('[x-micro-plugin] 微应用尚未注册,请先调用 setup() 方法')\n return\n }\n\n if (this.hasStarted) {\n console.warn('[x-micro-plugin] 微前端框架已经启动,跳过重复启动')\n return\n }\n\n const startOpts: FrameworkConfiguration = {\n prefetch: this.startOptions.prefetch !== false, // 默认启用预加载\n sandbox: {\n experimentalStyleIsolation: this.startOptions.sandbox?.experimentalStyleIsolation ?? true,\n strictStyleIsolation: this.startOptions.sandbox?.strictStyleIsolation ?? false,\n ...this.startOptions.sandbox\n },\n ...this.startOptions\n }\n\n start(startOpts)\n\n this.hasStarted = true\n }\n\n /**\n * 获取已注册的微应用配置列表\n * @returns 微应用配置列表的只读副本\n */\n getApps(): ReadonlyArray<MicroAppDescriptor> {\n return [...this.apps]\n }\n\n /**\n * 重置管理器状态(主要用于测试)\n */\n reset(): void {\n this.hasRegistered = false\n this.hasStarted = false\n this.apps = []\n this.startOptions = {}\n this.loader = undefined\n this.onError = undefined\n }\n}\n\n/**\n * 全局微前端管理器实例\n */\nexport const microAppManager = new MicroAppManager()\n\n/**\n * 设置微前端应用(便捷函数)\n * @param options 设置选项\n */\nexport function setupMicroPluginApps(options: MicroAppSetupOptions): void {\n microAppManager.setup(options)\n}\n\n/**\n * 启动微前端框架(便捷函数)\n */\nexport function startMicroPluginApps(): void {\n microAppManager.start()\n}\n\n/**\n * 检查是否有微应用(便捷函数)\n * @returns 是否存在微应用\n */\nexport function hasMicroApps(): boolean {\n return microAppManager.hasMicroApps()\n}\n\n/**\n * 获取微应用配置列表(便捷函数)\n * @returns 微应用配置列表\n */\nexport function getMicroApps(): ReadonlyArray<MicroAppDescriptor> {\n return microAppManager.getApps()\n}\n\n/**\n * 类型守卫:检查微应用是否有有效的入口地址\n * @param app 微应用描述符\n * @returns 是否为有效的微应用(有入口地址)\n */\nexport function hasValidEntry(app: MicroAppDescriptor): app is MicroAppDescriptor & { entry: string } {\n return typeof app.entry === 'string' && app.entry.length > 0\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maxax/x-plugins-micro",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Reusable micro-frontend plugin based on qiankun for Maxax projects",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -25,8 +25,7 @@
25
25
  ],
26
26
  "license": "MIT",
27
27
  "peerDependencies": {
28
- "qiankun": "^2.10.0",
29
- "vite-plugin-qiankun": "^1.0.15"
28
+ "qiankun": "^2.10.0"
30
29
  },
31
30
  "devDependencies": {
32
31
  "qiankun": "^2.10.0"