From 12b484d99ff6f5a0b41c158ad3f3b59da87ebd0e Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 11 Jul 2024 18:45:51 +0800 Subject: [PATCH 1/2] perf: skip calculation if browserslist is default value --- packages/core/src/plugins/target.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/core/src/plugins/target.ts b/packages/core/src/plugins/target.ts index b70332445d..020af6e9bf 100644 --- a/packages/core/src/plugins/target.ts +++ b/packages/core/src/plugins/target.ts @@ -1,6 +1,19 @@ -import * as toESVersion from 'browserslist-to-es-version'; +import { DEFAULT_WEB_BROWSERSLIST } from 'src/constants'; import type { RsbuildPlugin } from '../types'; +const getESVersion = async (browserslist: string[]) => { + const { browserslistToESVersion } = await import( + 'browserslist-to-es-version' + ); + + // skip calculation if the browserslist is the default value + if (browserslist.join(',') === DEFAULT_WEB_BROWSERSLIST.join(',')) { + return 2017; + } + + return browserslistToESVersion(browserslist); +}; + export const pluginTarget = (): RsbuildPlugin => ({ name: 'rsbuild:target', @@ -14,7 +27,7 @@ export const pluginTarget = (): RsbuildPlugin => ({ } const { browserslist } = environment; - const esVersion = toESVersion.browserslistToESVersion(browserslist); + const esVersion = await getESVersion(browserslist); if (target === 'web-worker') { chain.target(['webworker', `es${esVersion}`]); From 4961cce47065f7e14866534d07e6e2c906f4bd00 Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 11 Jul 2024 19:29:43 +0800 Subject: [PATCH 2/2] chore: update --- packages/core/src/plugins/target.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/plugins/target.ts b/packages/core/src/plugins/target.ts index 020af6e9bf..f4c36d15ea 100644 --- a/packages/core/src/plugins/target.ts +++ b/packages/core/src/plugins/target.ts @@ -1,4 +1,4 @@ -import { DEFAULT_WEB_BROWSERSLIST } from 'src/constants'; +import { DEFAULT_WEB_BROWSERSLIST } from '../constants'; import type { RsbuildPlugin } from '../types'; const getESVersion = async (browserslist: string[]) => {