@lynx-js/rspeedy
Version:
A webpack/rspack-based frontend toolchain for Lynx
44 lines (43 loc) • 1.84 kB
JavaScript
import { logger, mergeRsbuildConfig } from "@rsbuild/core";
function isCI() {
return !!process.env['CI'] && 'false' !== process.env['CI'];
}
function pluginRsdoctor(options) {
return {
name: 'lynx:rsbuild:rsdoctor',
remove: [
'rsbuild:rsdoctor'
],
setup (api) {
if ('true' !== process.env['RSDOCTOR']) return;
api.onBeforeCreateCompiler(async ({ bundlerConfigs })=>{
const { RsdoctorRspackPlugin } = await import("@rsdoctor/rspack-plugin");
for (const config of bundlerConfigs){
const pluginName = 'RsdoctorRspackPlugin';
const registered = config.plugins?.some((plugin)=>'object' == typeof plugin && plugin?.['isRsdoctorPlugin'] === true || plugin?.constructor?.name === pluginName);
if (registered) continue;
config.plugins ??= [];
const defaultOptions = {
disableClientServer: isCI(),
supports: {
banner: true
},
linter: {
rules: {
'ecma-version-check': options?.linter?.rules?.['ecma-version-check'] ?? [
'Warn',
{
ecmaVersion: 2019
}
]
}
}
};
config.plugins.push(new RsdoctorRspackPlugin(mergeRsbuildConfig(defaultOptions, options)));
}
logger.info("Rsdoctor is enabled.");
});
}
};
}
export { pluginRsdoctor };