mirror of
https://github.com/facebook/docusaurus.git
synced 2025-12-26 01:33:02 +00:00
Improve node SWC / browserslist target
This commit is contained in:
parent
5e846f6496
commit
2f2ba580e8
|
|
@ -24,6 +24,7 @@
|
|||
"@swc/html": "^1.13.5",
|
||||
"browserslist": "^4.24.2",
|
||||
"lightningcss": "^1.27.0",
|
||||
"semver": "^7.5.4",
|
||||
"swc-loader": "^0.2.6",
|
||||
"tslib": "^2.6.0",
|
||||
"webpack": "^5.95.0"
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import Rspack from '@rspack/core';
|
|||
import * as lightningcss from 'lightningcss';
|
||||
import browserslist from 'browserslist';
|
||||
import {minify as swcHtmlMinifier} from '@swc/html';
|
||||
import semver from 'semver';
|
||||
import type {JsMinifyOptions, Options as SwcOptions} from '@swc/core';
|
||||
|
||||
export const swcLoader = require.resolve('swc-loader');
|
||||
|
|
@ -63,6 +64,17 @@ export function getSwcJsMinimizerOptions(): JsMinifyOptions {
|
|||
};
|
||||
}
|
||||
|
||||
// TODO this is not accurate
|
||||
// for Rspack we should read from the built-in browserslist data
|
||||
function getLastBrowserslistKnownNodeVersion(): string {
|
||||
// browserslist('last 1 node versions')[0]!.replace('node ', '')
|
||||
return browserslist.nodeVersions.at(-1)!;
|
||||
}
|
||||
|
||||
function getMinVersion(v1: string, v2: string): string {
|
||||
return semver.lt(v1, v2) ? v1 : v2;
|
||||
}
|
||||
|
||||
// We need this because of Rspack built-in LightningCSS integration
|
||||
// See https://github.com/orgs/browserslist/discussions/846
|
||||
export function getBrowserslistQueries({
|
||||
|
|
@ -71,12 +83,23 @@ export function getBrowserslistQueries({
|
|||
isServer: boolean;
|
||||
}): string[] {
|
||||
if (isServer) {
|
||||
return [`node ${process.versions.node}`];
|
||||
const nodeTarget =
|
||||
// Escape hatch env variable
|
||||
process.env.DOCUSAURUS_SERVER_NODE_TARGET ??
|
||||
// For server builds, we want to use the current Node version as target
|
||||
// But we can't pass a target that Browserslist doesn't know about yet
|
||||
getMinVersion(
|
||||
process.versions.node,
|
||||
getLastBrowserslistKnownNodeVersion(),
|
||||
);
|
||||
|
||||
return [`node ${nodeTarget}`];
|
||||
}
|
||||
|
||||
const queries = browserslist.loadConfig({path: process.cwd()}) ?? [
|
||||
...browserslist.defaults,
|
||||
];
|
||||
|
||||
return queries;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue