Skip to content

Commit 38f324f

Browse files
perf: remove live binding from cjs builds (#3701)
1 parent 9a15e37 commit 38f324f

File tree

6 files changed

+75
-18
lines changed

6 files changed

+75
-18
lines changed

.changeset/small-baboons-nail.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
'@module-federation/inject-external-runtime-core-plugin': patch
3+
'@module-federation/bridge-react-webpack-plugin': patch
4+
'@module-federation/third-party-dts-extractor': patch
5+
'create-module-federation': patch
6+
'@module-federation/webpack-bundler-runtime': patch
7+
'@module-federation/bridge-shared': patch
8+
'@module-federation/bridge-react': patch
9+
'@module-federation/bridge-vue3': patch
10+
'@module-federation/devtools': patch
11+
'@module-federation/storybook-addon': patch
12+
'@module-federation/rsbuild-plugin': patch
13+
'@module-federation/data-prefetch': patch
14+
'@module-federation/runtime-tools': patch
15+
'@module-federation/retry-plugin': patch
16+
'@module-federation/runtime-core': patch
17+
'@module-federation/error-codes': patch
18+
'@module-federation/dts-plugin': patch
19+
'@module-federation/nextjs-mf': patch
20+
'@module-federation/utilities': patch
21+
'@module-federation/enhanced': patch
22+
'@module-federation/managers': patch
23+
'@module-federation/manifest': patch
24+
'@module-federation/modern-js': patch
25+
'bundle-size': patch
26+
'website-new': patch
27+
'@module-federation/esbuild': patch
28+
'@module-federation/runtime': patch
29+
'@module-federation/rspack': patch
30+
'@module-federation/modernjsapp': patch
31+
'@module-federation/node': patch
32+
'@module-federation/cli': patch
33+
'@module-federation/sdk': patch
34+
---
35+
36+
Disable live bindings on cjs builds of the runtime packages

packages/error-codes/rollup.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ module.exports = (rollupConfig, projectOptions) => {
1111
c.format === 'esm'
1212
? c.chunkFileNames.replace('.js', '.mjs')
1313
: c.chunkFileNames,
14+
...(c.format === 'cjs' ? { externalLiveBindings: false } : {}),
1415
}));
1516
} else {
1617
rollupConfig.output = {
@@ -25,6 +26,9 @@ module.exports = (rollupConfig, projectOptions) => {
2526
rollupConfig.output.format === 'esm'
2627
? rollupConfig.output.chunkFileNames.replace('.js', '.mjs')
2728
: rollupConfig.output.chunkFileNames,
29+
...(rollupConfig.output.format === 'cjs'
30+
? { externalLiveBindings: false }
31+
: {}),
2832
};
2933
}
3034

packages/runtime-core/rollup.config.cjs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ module.exports = (rollupConfig, projectOptions) => {
3636
c.format === 'cjs'
3737
? c.chunkFileNames.replace('.js', '.cjs')
3838
: c.chunkFileNames,
39+
...(c.format === 'cjs' ? { externalLiveBindings: false } : {}),
3940
}));
4041
} else {
4142
rollupConfig.output = {
@@ -54,6 +55,9 @@ module.exports = (rollupConfig, projectOptions) => {
5455
rollupConfig.output.format === 'cjs'
5556
? rollupConfig.output.chunkFileNames.replace('.js', '.cjs')
5657
: rollupConfig.output.chunkFileNames,
58+
...(rollupConfig.output.format === 'cjs'
59+
? { externalLiveBindings: false }
60+
: {}),
5761
};
5862
}
5963

packages/runtime-core/src/global.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {
1111
ModuleInfo,
1212
isDebugMode,
1313
} from '@module-federation/sdk';
14-
import { getBuilderId } from './utils/env';
1514
import { warn } from './utils/logger';
1615
import { FederationRuntimePlugin } from './type/plugin';
1716

packages/runtime-plugins/inject-external-runtime-core-plugin/rollup.config.cjs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ module.exports = (rollupConfig, _projectOptions) => {
3333
c.format === 'cjs'
3434
? c.chunkFileNames.replace('.js', '.cjs')
3535
: c.chunkFileNames,
36+
...(c.format === 'cjs' ? { externalLiveBindings: false } : {}),
3637
}));
3738
} else {
3839
rollupConfig.output = {
@@ -51,6 +52,9 @@ module.exports = (rollupConfig, _projectOptions) => {
5152
rollupConfig.output.format === 'cjs'
5253
? rollupConfig.output.chunkFileNames.replace('.js', '.cjs')
5354
: rollupConfig.output.chunkFileNames,
55+
...(rollupConfig.output.format === 'cjs'
56+
? { externalLiveBindings: false }
57+
: {}),
5458
};
5559
}
5660

packages/runtime-tools/rollup.config.cjs

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module.exports = (rollupConfig) => {
1+
module.exports = function (rollupConfig) {
22
rollupConfig.input = {
33
index: 'packages/runtime-tools/src/index.ts',
44
runtime: 'packages/runtime-tools/src/runtime.ts',
@@ -7,23 +7,28 @@ module.exports = (rollupConfig) => {
77
'runtime-core': 'packages/runtime-tools/src/runtime-core.ts',
88
};
99

10-
// Check if output is an array and add hoistTransitiveImports: false
1110
if (Array.isArray(rollupConfig.output)) {
12-
rollupConfig.output = rollupConfig.output.map((c) => ({
13-
...c,
14-
hoistTransitiveImports: false,
15-
entryFileNames:
16-
c.format === 'cjs'
17-
? c.entryFileNames.replace('.js', '.cjs')
18-
: c.entryFileNames,
19-
chunkFileNames:
20-
c.format === 'cjs'
21-
? c.chunkFileNames.replace('.js', '.cjs')
22-
: c.chunkFileNames,
23-
}));
11+
rollupConfig.output = rollupConfig.output.map(function (c) {
12+
var outputConfig = Object.assign({}, c, {
13+
hoistTransitiveImports: false,
14+
entryFileNames:
15+
c.format === 'cjs'
16+
? c.entryFileNames.replace('.js', '.cjs')
17+
: c.entryFileNames,
18+
chunkFileNames:
19+
c.format === 'cjs'
20+
? c.chunkFileNames.replace('.js', '.cjs')
21+
: c.chunkFileNames,
22+
});
23+
24+
if (c.format === 'cjs') {
25+
outputConfig.externalLiveBindings = false;
26+
}
27+
28+
return outputConfig;
29+
});
2430
} else {
25-
rollupConfig.output = {
26-
...rollupConfig.output,
31+
var outputConfig = Object.assign({}, rollupConfig.output, {
2732
hoistTransitiveImports: false,
2833
entryFileNames:
2934
rollupConfig.output.format === 'cjs'
@@ -33,7 +38,12 @@ module.exports = (rollupConfig) => {
3338
rollupConfig.output.format === 'cjs'
3439
? rollupConfig.output.chunkFileNames.replace('.js', '.cjs')
3540
: rollupConfig.output.chunkFileNames,
36-
};
41+
});
42+
43+
if (rollupConfig.output.format === 'cjs') {
44+
outputConfig.externalLiveBindings = false;
45+
}
46+
rollupConfig.output = outputConfig;
3747
}
3848

3949
return rollupConfig;

0 commit comments

Comments
 (0)