Skip to content

Commit dcb06d5

Browse files
committed
feat(ng-esbuild):add call of compensateExports to output files
1 parent 775db9d commit dcb06d5

File tree

3 files changed

+35
-12
lines changed

3 files changed

+35
-12
lines changed

libs/native-federation-core/src/build.ts

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export {
1111
BuildAdapterOptions,
1212
BuildResult,
1313
BuildKind,
14+
EntryPoint,
1415
} from './lib/core/build-adapter';
1516
export { withNativeFederation } from './lib/config/with-native-federation';
1617
export { buildForFederation } from './lib/core/build-for-federation';

libs/native-federation-esbuild/package.json

+5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
"name": "@softarc/native-federation-esbuild",
33
"version": "2.0.8",
44
"type": "commonjs",
5+
"repository": {
6+
"type": "git",
7+
"url": "angular-architects/module-federation-plugin.git",
8+
"directory": "libs/native-federation-esbuild"
9+
},
510
"dependencies": {
611
"@rollup/plugin-commonjs": "^22.0.2",
712
"@rollup/plugin-node-resolve": "^13.3.0",

libs/native-federation-esbuild/src/lib/adapter.ts

+29-12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import {
22
BuildAdapter,
33
BuildAdapterOptions,
44
BuildResult,
5+
EntryPoint,
6+
logger,
57
} from '@softarc/native-federation/build';
68
import * as esbuild from 'esbuild';
79
import { rollup } from 'rollup';
@@ -25,10 +27,18 @@ export type ReplacementConfig = {
2527
file: string;
2628
};
2729

30+
type EntryPointWithMeta = EntryPoint & {
31+
meta: {
32+
isPkg: boolean;
33+
originalFileName: string;
34+
};
35+
};
36+
2837
export interface EsBuildAdapterConfig {
2938
plugins: esbuild.Plugin[];
3039
fileReplacements?: Record<string, string | ReplacementConfig>;
3140
skipRollup?: boolean;
41+
/** Identify packages for which compensating missing named exports */
3242
compensateExports?: RegExp[];
3343
loader?: { [ext: string]: esbuild.Loader };
3444
}
@@ -43,11 +53,17 @@ export function createEsBuildAdapter(config: EsBuildAdapterConfig) {
4353

4454
// TODO: Do we need to prepare packages anymore as esbuild has evolved?
4555

46-
for (const entryPoint of entryPoints) {
56+
const preparedEntryPoints = entryPoints as EntryPointWithMeta[];
57+
for (const entryPoint of preparedEntryPoints) {
4758
const isPkg = entryPoint.fileName.includes('node_modules');
4859
const pkgName = isPkg ? inferePkgName(entryPoint.fileName) : '';
4960
const tmpFolder = `node_modules/.tmp/${pkgName}`;
5061

62+
entryPoint.meta = {
63+
originalFileName: entryPoint.fileName,
64+
isPkg,
65+
};
66+
5167
if (isPkg) {
5268
await prepareNodePackage(
5369
entryPoint.fileName,
@@ -56,13 +72,12 @@ export function createEsBuildAdapter(config: EsBuildAdapterConfig) {
5672
config,
5773
!!options.dev
5874
);
59-
6075
entryPoint.fileName = tmpFolder;
6176
}
6277
}
6378

6479
const ctx = await esbuild.context({
65-
entryPoints: entryPoints.map((ep) => ({
80+
entryPoints: preparedEntryPoints.map((ep) => ({
6681
in: ep.fileName,
6782
out: path.parse(ep.outName).name,
6883
})),
@@ -82,16 +97,18 @@ export function createEsBuildAdapter(config: EsBuildAdapterConfig) {
8297
const result = await ctx.rebuild();
8398
const writtenFiles = writeResult(result, outdir);
8499
ctx.dispose();
100+
preparedEntryPoints.forEach((entryPoint) => {
101+
const { meta, fileName, outName } = entryPoint;
102+
const normEntryPoint = meta.originalFileName.replace(/\\/g, '/');
103+
if (
104+
meta.isPkg &&
105+
config?.compensateExports?.find((regExp) => regExp.exec(normEntryPoint))
106+
) {
107+
logger.verbose('compensate exports for ' + meta.originalFileName);
108+
compensateExports(fileName, path.join(outdir, outName));
109+
}
110+
});
85111
return writtenFiles.map((fileName) => ({ fileName }));
86-
87-
// const normEntryPoint = entryPoint.replace(/\\/g, '/');
88-
// if (
89-
// isPkg &&
90-
// config?.compensateExports?.find((regExp) => regExp.exec(normEntryPoint))
91-
// ) {
92-
// logger.verbose('compensate exports for ' + tmpFolder);
93-
// compensateExports(tmpFolder, outfile);
94-
// }
95112
};
96113
}
97114

0 commit comments

Comments
 (0)