Skip to content

Commit d0e58e6

Browse files
Don't bundle unnecessary plugins in @babel/standalone (#15023)
* Don't bundle unnecessary plugins in `@babel/standalone` * Review * Revert "Review" This reverts commit 1d18656. * fix win Co-authored-by: liuxingbaoyu <30521560+liuxingbaoyu@users.noreply.github.com>
1 parent 73c9aef commit d0e58e6

10 files changed

Lines changed: 299 additions & 243 deletions

File tree

Gulpfile.mjs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import glob from "glob";
2222
import { resolve as importMetaResolve } from "import-meta-resolve";
2323

2424
import rollupBabelSource from "./scripts/rollup-plugin-babel-source.js";
25+
import rollupStandaloneInternals from "./scripts/rollup-plugin-standalone-internals.js";
2526
import formatCode from "./scripts/utils/formatCode.js";
2627
import { log } from "./scripts/utils/logger.cjs";
2728

@@ -175,6 +176,8 @@ async function generateRuntimeHelpers() {
175176
);
176177
}
177178

179+
const kebabToCamel = str => str.replace(/-[a-z]/g, c => c[1].toUpperCase());
180+
178181
function generateStandalone() {
179182
const dest = "./packages/babel-standalone/src/generated/";
180183
return gulp
@@ -183,16 +186,21 @@ function generateStandalone() {
183186
through.obj((file, enc, callback) => {
184187
log("Generating @babel/standalone files");
185188
const pluginConfig = JSON.parse(file.contents);
186-
let imports = "";
187-
let list = "";
189+
let imports = `import makeNoopPlugin from "../make-noop-plugin";`;
190+
let exportDecls = "";
191+
let exportsList = "";
188192
let allList = "";
189193

190-
for (const plugin of pluginConfig) {
191-
const camelPlugin = plugin.replace(/-[a-z]/g, c =>
192-
c[1].toUpperCase()
193-
);
194+
for (const plugin of pluginConfig.noopPlugins) {
195+
const camelPlugin = kebabToCamel(plugin);
196+
exportDecls += `${camelPlugin} = makeNoopPlugin(),`;
197+
allList += `"${plugin}": ${camelPlugin},`;
198+
}
199+
200+
for (const plugin of pluginConfig.externalPlugins) {
201+
const camelPlugin = kebabToCamel(plugin);
194202
imports += `import ${camelPlugin} from "@babel/plugin-${plugin}";`;
195-
list += `${camelPlugin},`;
203+
exportsList += `${camelPlugin},`;
196204
allList += `"${plugin}": ${camelPlugin},`;
197205
}
198206

@@ -201,7 +209,8 @@ function generateStandalone() {
201209
* To re-generate run 'yarn gulp generate-standalone'
202210
*/
203211
${imports}
204-
export {${list}};
212+
export const ${exportDecls.slice(0, -1)};
213+
export {${exportsList}};
205214
export const all: { [k: string]: any } = {${allList}};`;
206215
file.path = "plugins.ts";
207216
file.contents = Buffer.from(formatCode(fileContents, dest));
@@ -385,6 +394,7 @@ function buildRollup(packages, buildStandalone) {
385394
throw new Error("Rollup aborted due to warnings above");
386395
},
387396
plugins: [
397+
buildStandalone && rollupStandaloneInternals(),
388398
rollupBabelSource(),
389399
rollupReplace({
390400
preventAssignment: true,

packages/babel-core/src/parser/util/missing-plugin-helper.ts

Lines changed: 98 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -8,46 +8,6 @@ const pluginNameMap: Record<
88
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-async-do-expressions",
99
},
1010
},
11-
classProperties: {
12-
syntax: {
13-
name: "@babel/plugin-syntax-class-properties",
14-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties",
15-
},
16-
transform: {
17-
name: "@babel/plugin-proposal-class-properties",
18-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-class-properties",
19-
},
20-
},
21-
classPrivateProperties: {
22-
syntax: {
23-
name: "@babel/plugin-syntax-class-properties",
24-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties",
25-
},
26-
transform: {
27-
name: "@babel/plugin-proposal-class-properties",
28-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-class-properties",
29-
},
30-
},
31-
classPrivateMethods: {
32-
syntax: {
33-
name: "@babel/plugin-syntax-class-properties",
34-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties",
35-
},
36-
transform: {
37-
name: "@babel/plugin-proposal-private-methods",
38-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-private-methods",
39-
},
40-
},
41-
classStaticBlock: {
42-
syntax: {
43-
name: "@babel/plugin-syntax-class-static-block",
44-
url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-syntax-class-static-block",
45-
},
46-
transform: {
47-
name: "@babel/plugin-proposal-class-static-block",
48-
url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-class-static-block",
49-
},
50-
},
5111
decimal: {
5212
syntax: {
5313
name: "@babel/plugin-syntax-decimal",
@@ -74,12 +34,6 @@ const pluginNameMap: Record<
7434
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-do-expressions",
7535
},
7636
},
77-
dynamicImport: {
78-
syntax: {
79-
name: "@babel/plugin-syntax-dynamic-import",
80-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-dynamic-import",
81-
},
82-
},
8337
exportDefaultFrom: {
8438
syntax: {
8539
name: "@babel/plugin-syntax-export-default-from",
@@ -90,16 +44,6 @@ const pluginNameMap: Record<
9044
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-export-default-from",
9145
},
9246
},
93-
exportNamespaceFrom: {
94-
syntax: {
95-
name: "@babel/plugin-syntax-export-namespace-from",
96-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-namespace-from",
97-
},
98-
transform: {
99-
name: "@babel/plugin-proposal-export-namespace-from",
100-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-export-namespace-from",
101-
},
102-
},
10347
flow: {
10448
syntax: {
10549
name: "@babel/plugin-syntax-flow",
@@ -130,12 +74,6 @@ const pluginNameMap: Record<
13074
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-function-sent",
13175
},
13276
},
133-
importMeta: {
134-
syntax: {
135-
name: "@babel/plugin-syntax-import-meta",
136-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-meta",
137-
},
138-
},
13977
jsx: {
14078
syntax: {
14179
name: "@babel/plugin-syntax-jsx",
@@ -152,32 +90,6 @@ const pluginNameMap: Record<
15290
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-assertions",
15391
},
15492
},
155-
moduleStringNames: {
156-
syntax: {
157-
name: "@babel/plugin-syntax-module-string-names",
158-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-module-string-names",
159-
},
160-
},
161-
numericSeparator: {
162-
syntax: {
163-
name: "@babel/plugin-syntax-numeric-separator",
164-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-numeric-separator",
165-
},
166-
transform: {
167-
name: "@babel/plugin-proposal-numeric-separator",
168-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-numeric-separator",
169-
},
170-
},
171-
optionalChaining: {
172-
syntax: {
173-
name: "@babel/plugin-syntax-optional-chaining",
174-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-chaining",
175-
},
176-
transform: {
177-
name: "@babel/plugin-proposal-optional-chaining",
178-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-optional-chaining",
179-
},
180-
},
18193
pipelineOperator: {
18294
syntax: {
18395
name: "@babel/plugin-syntax-pipeline-operator",
@@ -188,16 +100,6 @@ const pluginNameMap: Record<
188100
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-pipeline-operator",
189101
},
190102
},
191-
privateIn: {
192-
syntax: {
193-
name: "@babel/plugin-syntax-private-property-in-object",
194-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-private-property-in-object",
195-
},
196-
transform: {
197-
name: "@babel/plugin-proposal-private-property-in-object",
198-
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-private-property-in-object",
199-
},
200-
},
201103
recordAndTuple: {
202104
syntax: {
203105
name: "@babel/plugin-syntax-record-and-tuple",
@@ -249,6 +151,68 @@ const pluginNameMap: Record<
249151
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-async-generator-functions",
250152
},
251153
},
154+
classProperties: {
155+
syntax: {
156+
name: "@babel/plugin-syntax-class-properties",
157+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties",
158+
},
159+
transform: {
160+
name: "@babel/plugin-proposal-class-properties",
161+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-class-properties",
162+
},
163+
},
164+
classPrivateProperties: {
165+
syntax: {
166+
name: "@babel/plugin-syntax-class-properties",
167+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties",
168+
},
169+
transform: {
170+
name: "@babel/plugin-proposal-class-properties",
171+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-class-properties",
172+
},
173+
},
174+
classPrivateMethods: {
175+
syntax: {
176+
name: "@babel/plugin-syntax-class-properties",
177+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties",
178+
},
179+
transform: {
180+
name: "@babel/plugin-proposal-private-methods",
181+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-private-methods",
182+
},
183+
},
184+
classStaticBlock: {
185+
syntax: {
186+
name: "@babel/plugin-syntax-class-static-block",
187+
url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-syntax-class-static-block",
188+
},
189+
transform: {
190+
name: "@babel/plugin-proposal-class-static-block",
191+
url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-class-static-block",
192+
},
193+
},
194+
dynamicImport: {
195+
syntax: {
196+
name: "@babel/plugin-syntax-dynamic-import",
197+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-dynamic-import",
198+
},
199+
},
200+
exportNamespaceFrom: {
201+
syntax: {
202+
name: "@babel/plugin-syntax-export-namespace-from",
203+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-namespace-from",
204+
},
205+
transform: {
206+
name: "@babel/plugin-proposal-export-namespace-from",
207+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-export-namespace-from",
208+
},
209+
},
210+
importMeta: {
211+
syntax: {
212+
name: "@babel/plugin-syntax-import-meta",
213+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-meta",
214+
},
215+
},
252216
logicalAssignment: {
253217
syntax: {
254218
name: "@babel/plugin-syntax-logical-assignment-operators",
@@ -259,6 +223,22 @@ const pluginNameMap: Record<
259223
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-logical-assignment-operators",
260224
},
261225
},
226+
moduleStringNames: {
227+
syntax: {
228+
name: "@babel/plugin-syntax-module-string-names",
229+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-module-string-names",
230+
},
231+
},
232+
numericSeparator: {
233+
syntax: {
234+
name: "@babel/plugin-syntax-numeric-separator",
235+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-numeric-separator",
236+
},
237+
transform: {
238+
name: "@babel/plugin-proposal-numeric-separator",
239+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-numeric-separator",
240+
},
241+
},
262242
nullishCoalescingOperator: {
263243
syntax: {
264244
name: "@babel/plugin-syntax-nullish-coalescing-operator",
@@ -289,6 +269,26 @@ const pluginNameMap: Record<
289269
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-optional-catch-binding",
290270
},
291271
},
272+
optionalChaining: {
273+
syntax: {
274+
name: "@babel/plugin-syntax-optional-chaining",
275+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-chaining",
276+
},
277+
transform: {
278+
name: "@babel/plugin-proposal-optional-chaining",
279+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-optional-chaining",
280+
},
281+
},
282+
privateIn: {
283+
syntax: {
284+
name: "@babel/plugin-syntax-private-property-in-object",
285+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-private-property-in-object",
286+
},
287+
transform: {
288+
name: "@babel/plugin-proposal-private-property-in-object",
289+
url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-private-property-in-object",
290+
},
291+
},
292292
};
293293

294294
//todo: we don't have plugin-syntax-private-property-in-object

packages/babel-standalone/package.json

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@
3838
"@babel/plugin-proposal-throw-expressions": "workspace:^",
3939
"@babel/plugin-proposal-unicode-property-regex": "workspace:^",
4040
"@babel/plugin-proposal-unicode-sets-regex": "workspace:^",
41-
"@babel/plugin-syntax-async-generators": "^7.8.4",
42-
"@babel/plugin-syntax-class-properties": "^7.12.13",
43-
"@babel/plugin-syntax-class-static-block": "^7.14.5",
4441
"@babel/plugin-syntax-decimal": "workspace:^",
4542
"@babel/plugin-syntax-decorators": "workspace:^",
4643
"@babel/plugin-syntax-destructuring-private": "workspace:^",
@@ -50,14 +47,10 @@
5047
"@babel/plugin-syntax-function-bind": "workspace:^",
5148
"@babel/plugin-syntax-function-sent": "workspace:^",
5249
"@babel/plugin-syntax-import-assertions": "workspace:^",
53-
"@babel/plugin-syntax-import-meta": "^7.10.4",
5450
"@babel/plugin-syntax-jsx": "workspace:^",
5551
"@babel/plugin-syntax-module-blocks": "workspace:^",
56-
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
57-
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
5852
"@babel/plugin-syntax-pipeline-operator": "workspace:^",
5953
"@babel/plugin-syntax-record-and-tuple": "workspace:^",
60-
"@babel/plugin-syntax-top-level-await": "^7.14.5",
6154
"@babel/plugin-syntax-typescript": "workspace:^",
6255
"@babel/plugin-transform-arrow-functions": "workspace:^",
6356
"@babel/plugin-transform-async-to-generator": "workspace:^",

0 commit comments

Comments
 (0)