UNPKG

zephyr-rspress-plugin

Version:

Rspress plugin for Zephyr

69 lines (68 loc) • 2.88 kB
import "node:module"; import { withZephyr } from "zephyr-rsbuild-plugin"; import { assertZephyrBuildTarget } from "zephyr-edge-contract"; import { zephyrRspressSSGPlugin } from "./zephyrRspressSSGPlugin.mjs"; import { moduleFederationPublicPathPlugin } from "./internal/assets/moduleFederationPublicPathPlugin.mjs"; function isRspressV1(config) { return 'builderPlugins' in config; } function isSsgEnabled(ssg) { return true === ssg || 'object' == typeof ssg && null !== ssg; } function with_zephyr_withZephyr(options) { if (options?.target !== void 0) assertZephyrBuildTarget(options.target, 'withZephyr({ target })'); const mfConfigs = []; const portableFederationPlugin = moduleFederationPublicPathPlugin({ target: options?.target, onModuleFederationPlugins (plugins) { mfConfigs.splice(0, mfConfigs.length, ...plugins); } }); return { name: 'zephyr-rspress-plugin', async config (config, { addPlugin }) { const { ssg } = config; if (isSsgEnabled(ssg)) { if (isRspressV1(config)) { const existingPlugins = config.builderPlugins ?? []; if (!existingPlugins.some((plugin)=>plugin === portableFederationPlugin)) config.builderPlugins = [ ...existingPlugins, portableFederationPlugin ]; } else { const existingPlugins = config.builderConfig?.plugins ?? []; const newBuilderConfig = { ...config.builderConfig, plugins: existingPlugins.some((plugin)=>plugin === portableFederationPlugin) ? existingPlugins : [ ...existingPlugins, portableFederationPlugin ] }; config.builderConfig = newBuilderConfig; } const ssgOptions = { ...options, mfConfig: mfConfigs }; addPlugin(zephyrRspressSSGPlugin(config, ssgOptions)); } else if (isRspressV1(config)) config.builderPlugins = [ ...config.builderPlugins, withZephyr(options) ]; else { const existingPlugins = config.builderConfig?.plugins ?? []; const newBuilderConfig = { ...config.builderConfig, plugins: [ ...existingPlugins, withZephyr(options) ] }; config.builderConfig = newBuilderConfig; } return config; } }; } export { with_zephyr_withZephyr as withZephyr }; //# sourceMappingURL=with-zephyr.mjs.map