diff --git a/rspack.config.js b/rspack.config.js index 0ee7f7eb5c0..99d56b3bfbd 100644 --- a/rspack.config.js +++ b/rspack.config.js @@ -8,9 +8,22 @@ const { defineConfig } = require('@rspack/cli') const { CopyRspackPlugin } = require('@rspack/core') const { CssExtractRspackPlugin, LightningCssMinimizerRspackPlugin, DefinePlugin, ProgressPlugin, SwcJsMinimizerRspackPlugin } = require('@rspack/core') const NodePolyfillPlugin = require('@rspack/plugin-node-polyfill') +const browserslist = require('browserslist') const path = require('node:path') const { VueLoaderPlugin } = require('vue-loader') +// browserslist-rs does not support baseline queries yet +// Manually resolving the browserslist config to the list of browsers with minimal versions +// See: https://github.com/browserslist/browserslist-rs/issues/40 +const browsers = browserslist(browserslistConfig) +const minBrowserVersion = browsers + .map((str) => str.split(' ')) + .reduce((minVersion, [browser, version]) => { + minVersion[browser] = minVersion[browser] ? Math.min(minVersion[browser], parseFloat(version)) : parseFloat(version) + return minVersion + }, {}) +const targets = Object.entries(minBrowserVersion).map(([browser, version]) => `${browser} >=${version}`).join(',') + module.exports = defineConfig((env) => { const appName = process.env.npm_package_name const appVersion = process.env.npm_package_version @@ -95,12 +108,12 @@ module.exports = defineConfig((env) => { minimizer: [ new SwcJsMinimizerRspackPlugin({ minimizerOptions: { - targets: browserslistConfig, + targets, }, }), new LightningCssMinimizerRspackPlugin({ minimizerOptions: { - targets: browserslistConfig, + targets, }, }), ], @@ -145,7 +158,7 @@ module.exports = defineConfig((env) => { }, }, env: { - targets: browserslistConfig, + targets, }, }, type: 'javascript/auto',