Skip to content

Commit 5d1ba5e

Browse files
Add export-order-loader and remove
babel-plugin-named-exports-order
1 parent 1911db3 commit 5d1ba5e

File tree

6 files changed

+52
-23
lines changed

6 files changed

+52
-23
lines changed

code/builders/builder-webpack5/package.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@
3636
"node": "./dist/presets/preview-preset.js",
3737
"require": "./dist/presets/preview-preset.js"
3838
},
39+
"./loaders/export-order-loader": {
40+
"types": "./dist/loaders/export-order-loader.d.ts",
41+
"node": "./dist/loaders/export-order-loader.js",
42+
"require": "./dist/loaders/export-order-loader.js"
43+
},
3944
"./templates/virtualModuleModernEntry.js.handlebars": "./templates/virtualModuleModernEntry.js.handlebars",
4045
"./templates/preview.ejs": "./templates/preview.ejs",
4146
"./package.json": "./package.json"
@@ -69,15 +74,16 @@
6974
"@types/node": "^18.0.0",
7075
"@types/semver": "^7.3.4",
7176
"babel-loader": "^9.0.0",
72-
"babel-plugin-named-exports-order": "^0.0.2",
7377
"browser-assert": "^1.2.1",
7478
"case-sensitive-paths-webpack-plugin": "^2.4.0",
7579
"constants-browserify": "^1.0.0",
7680
"css-loader": "^6.7.1",
81+
"es-module-lexer": "^0.9.3",
7782
"express": "^4.17.3",
7883
"fork-ts-checker-webpack-plugin": "^8.0.0",
7984
"fs-extra": "^11.1.0",
8085
"html-webpack-plugin": "^5.5.0",
86+
"magic-string": "^0.30.5",
8187
"path-browserify": "^1.0.1",
8288
"process": "^0.11.10",
8389
"semver": "^7.3.7",
@@ -114,7 +120,8 @@
114120
"entries": [
115121
"./src/index.ts",
116122
"./src/presets/custom-webpack-preset.ts",
117-
"./src/presets/preview-preset.ts"
123+
"./src/presets/preview-preset.ts",
124+
"./src/loaders/export-order-loader.ts"
118125
],
119126
"platform": "node"
120127
},
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { parse } from 'es-module-lexer';
2+
import MagicString from 'magic-string';
3+
import { LoaderContext } from 'webpack';
4+
5+
export default async function loader(this: LoaderContext<any>, source: string) {
6+
const callback = this.async();
7+
8+
try {
9+
const [_, exports] = parse(source);
10+
11+
if (exports.includes('__namedExportsOrder')) {
12+
return callback(null, source);
13+
}
14+
15+
const magicString = new MagicString(source);
16+
const orderedExports = exports.filter((e) => e !== 'default');
17+
magicString.append(`;export const __namedExportsOrder = ${JSON.stringify(orderedExports)};`);
18+
19+
const map = magicString.generateMap({ hires: true });
20+
return callback(null, magicString.toString(), map);
21+
} catch (err) {
22+
return callback(err as any);
23+
}
24+
};

code/builders/builder-webpack5/src/presets/preview-preset.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,5 @@ export const entries = async (_: unknown, options: any) => {
1818
return result;
1919
};
2020

21-
export const babel = async (config: any, options: any) => ({
22-
...config,
23-
overrides: [
24-
...(config?.overrides || []),
25-
{
26-
test: /\.(story|stories).*$/,
27-
plugins: [require.resolve('babel-plugin-named-exports-order')],
28-
},
29-
],
30-
});
31-
3221
export const previewMainTemplate = () =>
3322
require.resolve('@storybook/builder-webpack5/templates/preview.ejs');

code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,14 @@ export default async (
301301
].filter(Boolean),
302302
module: {
303303
rules: [
304+
{
305+
test: /\.stories\.([tj])sx?$|(stories|story)\.mdx$/,
306+
use: [
307+
{
308+
loader: require.resolve('@storybook/builder-webpack5/loaders/export-order-loader'),
309+
},
310+
],
311+
},
304312
{
305313
test: /\.m?js$/,
306314
type: 'javascript/auto',

code/lib/cli/src/generators/REACT_SCRIPTS/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ const generator: Generator = async (packageManager, npmOptions, options) => {
4444

4545
const extraPackages = [];
4646
extraPackages.push('webpack');
47-
// Miscellaneous dependency used in `babel-preset-react-app` but not listed as dep there
48-
extraPackages.push('babel-plugin-named-exports-order');
4947
// Miscellaneous dependency to add to be sure Storybook + CRA is working fine with Yarn PnP mode
5048
extraPackages.push('prop-types');
5149

code/yarn.lock

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6165,15 +6165,16 @@ __metadata:
61656165
"@types/webpack-hot-middleware": "npm:^2.25.6"
61666166
"@types/webpack-virtual-modules": "npm:^0.1.1"
61676167
babel-loader: "npm:^9.0.0"
6168-
babel-plugin-named-exports-order: "npm:^0.0.2"
61696168
browser-assert: "npm:^1.2.1"
61706169
case-sensitive-paths-webpack-plugin: "npm:^2.4.0"
61716170
constants-browserify: "npm:^1.0.0"
61726171
css-loader: "npm:^6.7.1"
6172+
es-module-lexer: "npm:^0.9.3"
61736173
express: "npm:^4.17.3"
61746174
fork-ts-checker-webpack-plugin: "npm:^8.0.0"
61756175
fs-extra: "npm:^11.1.0"
61766176
html-webpack-plugin: "npm:^5.5.0"
6177+
magic-string: "npm:^0.30.5"
61776178
path-browserify: "npm:^1.0.1"
61786179
pretty-hrtime: "npm:^1.0.3"
61796180
process: "npm:^0.11.10"
@@ -11511,13 +11512,6 @@ __metadata:
1151111512
languageName: node
1151211513
linkType: hard
1151311514

11514-
"babel-plugin-named-exports-order@npm:^0.0.2":
11515-
version: 0.0.2
11516-
resolution: "babel-plugin-named-exports-order@npm:0.0.2"
11517-
checksum: e1d001722bddabc296b74f7cd020418a3cce9ca7052d5dd5dbd2870745d9566e286d14707c0bbfc9d4b4b643031052b358124ec735069f214d22b0b6768daf9d
11518-
languageName: node
11519-
linkType: hard
11520-
1152111515
"babel-plugin-polyfill-corejs2@npm:^0.4.4, babel-plugin-polyfill-corejs2@npm:^0.4.5, babel-plugin-polyfill-corejs2@npm:^0.4.6":
1152211516
version: 0.4.6
1152311517
resolution: "babel-plugin-polyfill-corejs2@npm:0.4.6"
@@ -21281,6 +21275,15 @@ __metadata:
2128121275
languageName: node
2128221276
linkType: hard
2128321277

21278+
"magic-string@npm:^0.30.5":
21279+
version: 0.30.5
21280+
resolution: "magic-string@npm:0.30.5"
21281+
dependencies:
21282+
"@jridgewell/sourcemap-codec": "npm:^1.4.15"
21283+
checksum: 38ac220ca7539e96da7ea2f38d85796bdf5c69b6bcae728c4bc2565084e6dc326b9174ee9770bea345cf6c9b3a24041b767167874fab5beca874d2356a9d1520
21284+
languageName: node
21285+
linkType: hard
21286+
2128421287
"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0":
2128521288
version: 2.1.0
2128621289
resolution: "make-dir@npm:2.1.0"

0 commit comments

Comments
 (0)