Skip to content

Commit

Permalink
perf: lazy load preset-env plugins (#13076)
Browse files Browse the repository at this point in the history
  • Loading branch information
JLHwung committed Mar 30, 2021
1 parent a647b9e commit 3e174e9
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 66 deletions.
6 changes: 5 additions & 1 deletion babel.config.js
Expand Up @@ -179,7 +179,11 @@ module.exports = function (api) {
assumptions: parserAssumptions,
},
convertESM && {
test: ["./packages/babel-cli", "./packages/babel-core"].map(normalize),
test: [
"./packages/babel-cli",
"./packages/babel-core",
"./packages/babel-preset-env/src/available-plugins.js",
].map(normalize),
plugins: [
// Explicitly use the lazy version of CommonJS modules.
["@babel/transform-modules-commonjs", { lazy: true }],
Expand Down
133 changes: 69 additions & 64 deletions packages/babel-preset-env/src/available-plugins.js
Expand Up @@ -68,68 +68,73 @@ import bugfixSafariForShadowing from "@babel/preset-modules/lib/plugins/transfor
import bugfixV8SpreadParametersInOptionalChaining from "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining";

export default {
"bugfix/transform-async-arrows-in-class": bugfixAsyncArrowsInClass,
"bugfix/transform-edge-default-parameters": bugfixEdgeDefaultParameters,
"bugfix/transform-edge-function-name": bugfixEdgeFunctionName,
"bugfix/transform-safari-block-shadowing": bugfixSafariBlockShadowing,
"bugfix/transform-safari-for-shadowing": bugfixSafariForShadowing,
"bugfix/transform-tagged-template-caching": bugfixTaggedTemplateCaching,
"bugfix/transform-v8-spread-parameters-in-optional-chaining": bugfixV8SpreadParametersInOptionalChaining,
"proposal-async-generator-functions": proposalAsyncGeneratorFunctions,
"proposal-class-properties": proposalClassProperties,
"proposal-dynamic-import": proposalDynamicImport,
"proposal-export-namespace-from": proposalExportNamespaceFrom,
"proposal-json-strings": proposalJsonStrings,
"proposal-logical-assignment-operators": proposalLogicalAssignmentOperators,
"proposal-nullish-coalescing-operator": proposalNullishCoalescingOperator,
"proposal-numeric-separator": proposalNumericSeparator,
"proposal-object-rest-spread": proposalObjectRestSpread,
"proposal-optional-catch-binding": proposalOptionalCatchBinding,
"proposal-optional-chaining": proposalOptionalChaining,
"proposal-private-methods": proposalPrivateMethods,
"proposal-unicode-property-regex": proposalUnicodePropertyRegex,
"syntax-async-generators": syntaxAsyncGenerators,
"syntax-class-properties": syntaxClassProperties,
"syntax-dynamic-import": syntaxDynamicImport,
"syntax-export-namespace-from": syntaxExportNamespaceFrom,
"syntax-json-strings": syntaxJsonStrings,
"syntax-logical-assignment-operators": syntaxLogicalAssignmentOperators,
"syntax-nullish-coalescing-operator": syntaxNullishCoalescingOperator,
"syntax-numeric-separator": syntaxNumericSeparator,
"syntax-object-rest-spread": syntaxObjectRestSpread,
"syntax-optional-catch-binding": syntaxOptionalCatchBinding,
"syntax-optional-chaining": syntaxOptionalChaining,
"syntax-top-level-await": syntaxTopLevelAwait,
"transform-arrow-functions": transformArrowFunctions,
"transform-async-to-generator": transformAsyncToGenerator,
"transform-block-scoped-functions": transformBlockScopedFunctions,
"transform-block-scoping": transformBlockScoping,
"transform-classes": transformClasses,
"transform-computed-properties": transformComputedProperties,
"transform-destructuring": transformDestructuring,
"transform-dotall-regex": transformDotallRegex,
"transform-duplicate-keys": transformDuplicateKeys,
"transform-exponentiation-operator": transformExponentialOperator,
"transform-for-of": transformForOf,
"transform-function-name": transformFunctionName,
"transform-literals": transformLiterals,
"transform-member-expression-literals": transformMemberExpressionLiterals,
"transform-modules-amd": transformModulesAmd,
"transform-modules-commonjs": transformModulesCommonjs,
"transform-modules-systemjs": transformModulesSystemjs,
"transform-modules-umd": transformModulesUmd,
"transform-named-capturing-groups-regex": transformNamedCapturingGroupsRegex,
"transform-new-target": transformNewTarget,
"transform-object-super": transformObjectSuper,
"transform-parameters": transformParameters,
"transform-property-literals": transformPropertyLiterals,
"transform-regenerator": transformRegenerator,
"transform-reserved-words": transformReservedWords,
"transform-shorthand-properties": transformShorthandProperties,
"transform-spread": transformSpread,
"transform-sticky-regex": transformStickyRegex,
"transform-template-literals": transformTemplateLiterals,
"transform-typeof-symbol": transformTypeofSymbol,
"transform-unicode-escapes": transformUnicodeEscapes,
"transform-unicode-regex": transformUnicodeRegex,
"bugfix/transform-async-arrows-in-class": () => bugfixAsyncArrowsInClass,
"bugfix/transform-edge-default-parameters": () => bugfixEdgeDefaultParameters,
"bugfix/transform-edge-function-name": () => bugfixEdgeFunctionName,
"bugfix/transform-safari-block-shadowing": () => bugfixSafariBlockShadowing,
"bugfix/transform-safari-for-shadowing": () => bugfixSafariForShadowing,
"bugfix/transform-tagged-template-caching": () => bugfixTaggedTemplateCaching,
"bugfix/transform-v8-spread-parameters-in-optional-chaining": () =>
bugfixV8SpreadParametersInOptionalChaining,
"proposal-async-generator-functions": () => proposalAsyncGeneratorFunctions,
"proposal-class-properties": () => proposalClassProperties,
"proposal-dynamic-import": () => proposalDynamicImport,
"proposal-export-namespace-from": () => proposalExportNamespaceFrom,
"proposal-json-strings": () => proposalJsonStrings,
"proposal-logical-assignment-operators": () =>
proposalLogicalAssignmentOperators,
"proposal-nullish-coalescing-operator": () =>
proposalNullishCoalescingOperator,
"proposal-numeric-separator": () => proposalNumericSeparator,
"proposal-object-rest-spread": () => proposalObjectRestSpread,
"proposal-optional-catch-binding": () => proposalOptionalCatchBinding,
"proposal-optional-chaining": () => proposalOptionalChaining,
"proposal-private-methods": () => proposalPrivateMethods,
"proposal-unicode-property-regex": () => proposalUnicodePropertyRegex,
"syntax-async-generators": () => syntaxAsyncGenerators,
"syntax-class-properties": () => syntaxClassProperties,
"syntax-dynamic-import": () => syntaxDynamicImport,
"syntax-export-namespace-from": () => syntaxExportNamespaceFrom,
"syntax-json-strings": () => syntaxJsonStrings,
"syntax-logical-assignment-operators": () => syntaxLogicalAssignmentOperators,
"syntax-nullish-coalescing-operator": () => syntaxNullishCoalescingOperator,
"syntax-numeric-separator": () => syntaxNumericSeparator,
"syntax-object-rest-spread": () => syntaxObjectRestSpread,
"syntax-optional-catch-binding": () => syntaxOptionalCatchBinding,
"syntax-optional-chaining": () => syntaxOptionalChaining,
"syntax-top-level-await": () => syntaxTopLevelAwait,
"transform-arrow-functions": () => transformArrowFunctions,
"transform-async-to-generator": () => transformAsyncToGenerator,
"transform-block-scoped-functions": () => transformBlockScopedFunctions,
"transform-block-scoping": () => transformBlockScoping,
"transform-classes": () => transformClasses,
"transform-computed-properties": () => transformComputedProperties,
"transform-destructuring": () => transformDestructuring,
"transform-dotall-regex": () => transformDotallRegex,
"transform-duplicate-keys": () => transformDuplicateKeys,
"transform-exponentiation-operator": () => transformExponentialOperator,
"transform-for-of": () => transformForOf,
"transform-function-name": () => transformFunctionName,
"transform-literals": () => transformLiterals,
"transform-member-expression-literals": () =>
transformMemberExpressionLiterals,
"transform-modules-amd": () => transformModulesAmd,
"transform-modules-commonjs": () => transformModulesCommonjs,
"transform-modules-systemjs": () => transformModulesSystemjs,
"transform-modules-umd": () => transformModulesUmd,
"transform-named-capturing-groups-regex": () =>
transformNamedCapturingGroupsRegex,
"transform-new-target": () => transformNewTarget,
"transform-object-super": () => transformObjectSuper,
"transform-parameters": () => transformParameters,
"transform-property-literals": () => transformPropertyLiterals,
"transform-regenerator": () => transformRegenerator,
"transform-reserved-words": () => transformReservedWords,
"transform-shorthand-properties": () => transformShorthandProperties,
"transform-spread": () => transformSpread,
"transform-sticky-regex": () => transformStickyRegex,
"transform-template-literals": () => transformTemplateLiterals,
"transform-typeof-symbol": () => transformTypeofSymbol,
"transform-unicode-escapes": () => transformUnicodeEscapes,
"transform-unicode-regex": () => transformUnicodeRegex,
};
2 changes: 1 addition & 1 deletion packages/babel-preset-env/src/index.js
Expand Up @@ -81,7 +81,7 @@ function getPluginList(proposals: boolean, bugfixes: boolean) {
}

const getPlugin = (pluginName: string) => {
const plugin = availablePlugins[pluginName];
const plugin = availablePlugins[pluginName]();

if (!plugin) {
throw new Error(
Expand Down

0 comments on commit 3e174e9

Please sign in to comment.