From 13a0b50600ea230ef308868a9621a2736e205d81 Mon Sep 17 00:00:00 2001 From: neverland Date: Sat, 28 Sep 2024 13:08:58 +0800 Subject: [PATCH] perf: remove browserslist-to-es-version dependency (#3585) --- .../browserslist-config-mock/index.json | 2 +- packages/core/package.json | 1 - packages/core/src/plugins/target.ts | 30 +++++++++---------- packages/core/tests/target.test.ts | 2 +- packages/core/tsconfig.json | 1 - pnpm-lock.yaml | 3 -- 6 files changed, 16 insertions(+), 23 deletions(-) diff --git a/e2e/cases/browserslist/browserslist-config-mock/index.json b/e2e/cases/browserslist/browserslist-config-mock/index.json index b4bf962ad6..60262510a3 100644 --- a/e2e/cases/browserslist/browserslist-config-mock/index.json +++ b/e2e/cases/browserslist/browserslist-config-mock/index.json @@ -1 +1 @@ -["Chrome >= 49", "Edge >= 79", "Firefox >= 49", "Safari >= 10"] +["Chrome >= 40", "Edge >= 79", "Firefox >= 49", "Safari >= 10"] diff --git a/packages/core/package.json b/packages/core/package.json index 74ea3edc26..20e00b5827 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -65,7 +65,6 @@ "@types/webpack-bundle-analyzer": "4.7.0", "@types/ws": "^8.5.12", "browserslist": "4.24.0", - "browserslist-to-es-version": "^1.0.0", "chokidar": "3.6.0", "commander": "^12.1.0", "connect": "3.7.0", diff --git a/packages/core/src/plugins/target.ts b/packages/core/src/plugins/target.ts index f4c36d15ea..c7f93e208f 100644 --- a/packages/core/src/plugins/target.ts +++ b/packages/core/src/plugins/target.ts @@ -1,19 +1,6 @@ import { DEFAULT_WEB_BROWSERSLIST } from '../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', @@ -27,14 +14,25 @@ export const pluginTarget = (): RsbuildPlugin => ({ } const { browserslist } = environment; - const esVersion = await getESVersion(browserslist); + + // skip calculation if the browserslist is the default value + const isDefaultBrowserslist = + browserslist.join(',') === DEFAULT_WEB_BROWSERSLIST.join(','); if (target === 'web-worker') { - chain.target(['webworker', `es${esVersion}`]); + chain.target( + isDefaultBrowserslist + ? ['webworker', 'es2017'] + : // TODO: Rspack should support `browserslist:` for webworker target + ['webworker', 'es5'], + ); return; } - chain.target(['web', `es${esVersion}`]); + const esQuery = isDefaultBrowserslist + ? 'es2017' + : (`browserslist:${browserslist.join(',')}` as const); + chain.target(['web', esQuery]); }, }); }, diff --git a/packages/core/tests/target.test.ts b/packages/core/tests/target.test.ts index 711fd54e67..04970d76bb 100644 --- a/packages/core/tests/target.test.ts +++ b/packages/core/tests/target.test.ts @@ -10,7 +10,7 @@ describe('plugin-target', () => { }, { browserslist: ['Chrome 100'], - expected: ['web', 'es2018'], + expected: ['web', 'browserslist:Chrome 100'], }, { browserslist: null, diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 52cafb4d4b..dd03c97ce3 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -30,7 +30,6 @@ "rspack-manifest-plugin": ["./compiled/rspack-manifest-plugin"], "rsbuild-dev-middleware": ["./compiled/rsbuild-dev-middleware"], "launch-editor-middleware": ["./compiled/launch-editor-middleware"], - "browserslist-to-es-version": ["./compiled/browserslist-to-es-version"], "connect-history-api-fallback": [ "./compiled/connect-history-api-fallback" ] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5059b1a1ee..1db32a7af4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -633,9 +633,6 @@ importers: browserslist: specifier: 4.24.0 version: 4.24.0 - browserslist-to-es-version: - specifier: ^1.0.0 - version: 1.0.0 chokidar: specifier: 3.6.0 version: 3.6.0