Skip to content

Commit aac68b4

Browse files
Complete dual ESM+CJS setup for remaining packages
Co-authored-by: ScriptedAlchemy <25274700+ScriptedAlchemy@users.noreply.github.com>
1 parent 0d2b91f commit aac68b4

File tree

6 files changed

+133
-11
lines changed

6 files changed

+133
-11
lines changed

packages/storybook-addon/package.json

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
"name": "@module-federation/storybook-addon",
33
"version": "4.0.27",
44
"description": "Storybook addon to consume remote module federated apps/components",
5-
"type": "commonjs",
5+
"type": "module",
66
"license": "MIT",
7+
"main": "./dist/index.cjs.cjs",
8+
"module": "./dist/index.esm.js",
9+
"types": "./dist/index.d.ts",
710
"repository": {
811
"type": "git",
912
"url": "https://github.com/module-federation/core/",
@@ -25,16 +28,16 @@
2528
"README.md"
2629
],
2730
"author": "Fiodorov Andrei <hello@fyodorovandrei.com> (https://github.com/fyodorovandrei)",
28-
"main": "dist/src/index.js",
29-
"types": "dist/src/index.d.ts",
3031
"exports": {
3132
".": {
32-
"types": "./dist/src/index.d.ts",
33-
"default": "./dist/src/index.js"
33+
"types": "./dist/index.d.ts",
34+
"import": "./dist/index.esm.js",
35+
"require": "./dist/index.cjs.cjs"
3436
},
3537
"./preset": {
3638
"types": "./dist/preset.d.ts",
37-
"default": "./dist/preset.js"
39+
"import": "./dist/preset.esm.js",
40+
"require": "./dist/preset.cjs.cjs"
3841
},
3942
"./*": "./*"
4043
},

packages/storybook-addon/project.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,22 @@
77
"implicitDependencies": ["utils"],
88
"targets": {
99
"build": {
10-
"executor": "@nx/js:tsc",
11-
"outputs": ["{options.outputPath}"],
10+
"executor": "@nx/rollup:rollup",
11+
"outputs": ["{workspaceRoot}/packages/storybook-addon/dist"],
1212
"options": {
13+
"parallel": false,
1314
"outputPath": "packages/storybook-addon/dist",
1415
"main": "packages/storybook-addon/src/index.ts",
16+
"additionalEntryPoints": ["packages/storybook-addon/preset.ts"],
1517
"tsConfig": "packages/storybook-addon/tsconfig.lib.json",
16-
"assets": ["packages/storybook-addon/*.md"]
18+
"assets": [],
19+
"external": ["@module-federation/*"],
20+
"project": "packages/storybook-addon/package.json",
21+
"compiler": "swc",
22+
"rollupConfig": "packages/storybook-addon/rollup.config.cjs",
23+
"format": ["cjs", "esm"],
24+
"generatePackageJson": false,
25+
"useLegacyTypescriptPlugin": false
1726
},
1827
"dependsOn": [
1928
{
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
const copy = require('rollup-plugin-copy');
2+
3+
module.exports = (rollupConfig, _projectOptions) => {
4+
rollupConfig.input = {
5+
index: 'packages/storybook-addon/src/index.ts',
6+
preset: 'packages/storybook-addon/preset.ts',
7+
};
8+
9+
rollupConfig.plugins.push(
10+
copy({
11+
targets: [
12+
{ src: 'packages/storybook-addon/README.md', dest: 'packages/storybook-addon/dist' },
13+
{ src: 'packages/storybook-addon/LICENSE', dest: 'packages/storybook-addon/dist' },
14+
],
15+
}),
16+
);
17+
18+
rollupConfig.external = [
19+
/@module-federation/,
20+
/@storybook/,
21+
/@rsbuild/,
22+
/@nx/,
23+
'webpack',
24+
'webpack-virtual-modules',
25+
];
26+
27+
if (Array.isArray(rollupConfig.output)) {
28+
rollupConfig.output = rollupConfig.output.map((c) => ({
29+
...c,
30+
hoistTransitiveImports: false,
31+
entryFileNames:
32+
c.format === 'cjs'
33+
? c.entryFileNames.replace('.js', '.cjs')
34+
: c.entryFileNames,
35+
chunkFileNames:
36+
c.format === 'cjs'
37+
? c.chunkFileNames.replace('.js', '.cjs')
38+
: c.chunkFileNames,
39+
...(c.format === 'cjs' ? { externalLiveBindings: false } : {}),
40+
}));
41+
} else {
42+
rollupConfig.output = {
43+
...rollupConfig.output,
44+
hoistTransitiveImports: false,
45+
entryFileNames:
46+
rollupConfig.output.format === 'cjs'
47+
? rollupConfig.output.entryFileNames.replace('.js', '.cjs')
48+
: rollupConfig.output.entryFileNames,
49+
chunkFileNames:
50+
rollupConfig.output.format === 'cjs'
51+
? rollupConfig.output.chunkFileNames.replace('.js', '.cjs')
52+
: rollupConfig.output.chunkFileNames,
53+
...(rollupConfig.output.format === 'cjs'
54+
? { externalLiveBindings: false }
55+
: {}),
56+
};
57+
}
58+
59+
return rollupConfig;
60+
};

packages/utilities/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"name": "@module-federation/utilities",
33
"version": "3.1.66",
4-
"main": "./dist/index.cjs.js",
4+
"type": "module",
5+
"main": "./dist/index.cjs.cjs",
56
"module": "./dist/index.esm.js",
67
"types": "./dist/index.d.ts",
78
"license": "MIT",
@@ -44,7 +45,7 @@
4445
".": {
4546
"types": "./dist/index.d.ts",
4647
"import": "./dist/index.esm.js",
47-
"require": "./dist/index.cjs.js"
48+
"require": "./dist/index.cjs.cjs"
4849
},
4950
"./package.json": "./package.json"
5051
},

packages/utilities/project.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"additionalEntryPoints": ["packages/utilities/src/types/types.ts"],
3131
"external": ["@module-federation/*"],
3232
"compiler": "swc",
33+
"rollupConfig": "packages/utilities/rollup.config.cjs",
3334
"format": ["cjs", "esm"],
3435
"generatePackageJson": false,
3536
"useLegacyTypescriptPlugin": false
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
const copy = require('rollup-plugin-copy');
2+
3+
module.exports = (rollupConfig, _projectOptions) => {
4+
rollupConfig.plugins.push(
5+
copy({
6+
targets: [
7+
{ src: 'packages/utilities/README.md', dest: 'packages/utilities/dist' },
8+
{ src: 'packages/utilities/LICENSE', dest: 'packages/utilities/dist' },
9+
],
10+
}),
11+
);
12+
13+
rollupConfig.external = [/@module-federation/];
14+
15+
if (Array.isArray(rollupConfig.output)) {
16+
rollupConfig.output = rollupConfig.output.map((c) => ({
17+
...c,
18+
hoistTransitiveImports: false,
19+
entryFileNames:
20+
c.format === 'cjs'
21+
? c.entryFileNames.replace('.js', '.cjs')
22+
: c.entryFileNames,
23+
chunkFileNames:
24+
c.format === 'cjs'
25+
? c.chunkFileNames.replace('.js', '.cjs')
26+
: c.chunkFileNames,
27+
...(c.format === 'cjs' ? { externalLiveBindings: false } : {}),
28+
}));
29+
} else {
30+
rollupConfig.output = {
31+
...rollupConfig.output,
32+
hoistTransitiveImports: false,
33+
entryFileNames:
34+
rollupConfig.output.format === 'cjs'
35+
? rollupConfig.output.entryFileNames.replace('.js', '.cjs')
36+
: rollupConfig.output.entryFileNames,
37+
chunkFileNames:
38+
rollupConfig.output.format === 'cjs'
39+
? rollupConfig.output.chunkFileNames.replace('.js', '.cjs')
40+
: rollupConfig.output.chunkFileNames,
41+
...(rollupConfig.output.format === 'cjs'
42+
? { externalLiveBindings: false }
43+
: {}),
44+
};
45+
}
46+
47+
return rollupConfig;
48+
};

0 commit comments

Comments
 (0)