@module-federation/enhanced
Version:
This package provides enhanced features for module federation.
44 lines (42 loc) • 2.01 kB
JavaScript
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_lib_sharing_SharePlugin = require('../SharePlugin.js');
const require_lib_sharing_tree_shaking_SharedUsedExportsOptimizerPlugin = require('./SharedUsedExportsOptimizerPlugin.js');
const require_lib_sharing_tree_shaking_IndependentSharedPlugin = require('./IndependentSharedPlugin.js');
//#region src/lib/sharing/tree-shaking/TreeShakingSharedPlugin.ts
var TreeShakingSharedPlugin = class {
constructor(options) {
this.name = "TreeShakingSharedPlugin";
const { mfConfig, secondary } = options;
this.mfConfig = mfConfig;
this.outputDir = mfConfig.treeShakingDir || "independent-packages";
this.secondary = Boolean(secondary);
}
apply(compiler) {
const { mfConfig, outputDir, secondary } = this;
const { name, shared, library } = mfConfig;
if (!name) throw new Error("name is required");
if (!shared) return;
const sharedOptions = require_lib_sharing_SharePlugin.normalizeSharedOptions(shared);
if (!sharedOptions.length) return;
if (sharedOptions.some(([_, config]) => config.treeShaking && config.import !== false)) {
if (!secondary) new require_lib_sharing_tree_shaking_SharedUsedExportsOptimizerPlugin.default(sharedOptions, mfConfig.injectTreeShakingUsedExports, void 0, mfConfig.manifest).apply(compiler);
this._independentSharePlugin = new require_lib_sharing_tree_shaking_IndependentSharedPlugin.default({
name,
shared,
outputDir,
plugins: mfConfig.treeShakingSharedPlugins?.map((p) => {
return new (require(p))();
}) || [],
treeShakingSharedExcludePlugins: mfConfig.treeShakingSharedExcludePlugins,
treeShaking: secondary,
library,
manifest: mfConfig.manifest
});
this._independentSharePlugin.apply(compiler);
}
}
};
//#endregion
exports.default = TreeShakingSharedPlugin;
//# sourceMappingURL=TreeShakingSharedPlugin.js.map