zephyr-rspress-plugin
Version:
Rspress plugin for Zephyr
69 lines (68 loc) • 2.88 kB
JavaScript
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