perf: lazy load preset-env plugins (#13076)

This commit is contained in:
Huáng Jùnliàng 2021-03-30 15:43:41 -04:00 committed by GitHub
parent a647b9ea6b
commit 3e174e9cbd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 75 additions and 66 deletions

View File

@ -179,7 +179,11 @@ module.exports = function (api) {
assumptions: parserAssumptions, assumptions: parserAssumptions,
}, },
convertESM && { 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: [ plugins: [
// Explicitly use the lazy version of CommonJS modules. // Explicitly use the lazy version of CommonJS modules.
["@babel/transform-modules-commonjs", { lazy: true }], ["@babel/transform-modules-commonjs", { lazy: true }],

View File

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

View File

@ -81,7 +81,7 @@ function getPluginList(proposals: boolean, bugfixes: boolean) {
} }
const getPlugin = (pluginName: string) => { const getPlugin = (pluginName: string) => {
const plugin = availablePlugins[pluginName]; const plugin = availablePlugins[pluginName]();
if (!plugin) { if (!plugin) {
throw new Error( throw new Error(