diff --git a/packages/rspack-cli/src/types.ts b/packages/rspack-cli/src/types.ts index 852ffc165013..938e173c68b9 100644 --- a/packages/rspack-cli/src/types.ts +++ b/packages/rspack-cli/src/types.ts @@ -24,6 +24,7 @@ export interface RspackCLIOptions { config?: string; argv?: Record; configName?: string[]; + "config-loader"?: string; } export interface RspackBuildCLIOptions extends RspackCLIOptions { diff --git a/packages/rspack-cli/src/utils/loadConfig.ts b/packages/rspack-cli/src/utils/loadConfig.ts index 8e166e5ea516..26c08c26c652 100644 --- a/packages/rspack-cli/src/utils/loadConfig.ts +++ b/packages/rspack-cli/src/utils/loadConfig.ts @@ -61,7 +61,7 @@ export async function loadRspackConfig( if (!fs.existsSync(configPath)) { throw new Error(`config file "${configPath}" not found.`); } - if (isTsFile(configPath)) { + if (isTsFile(configPath) && options["config-loader"] === "register") { await registerLoader(configPath); } return crossImport(configPath, cwd); @@ -69,7 +69,7 @@ export async function loadRspackConfig( const defaultConfig = findConfig(path.resolve(cwd, DEFAULT_CONFIG_NAME)); if (defaultConfig) { - if (isTsFile(defaultConfig)) { + if (isTsFile(defaultConfig) && options["config-loader"] === "register") { await registerLoader(defaultConfig); } return crossImport(defaultConfig, cwd); diff --git a/packages/rspack-cli/src/utils/options.ts b/packages/rspack-cli/src/utils/options.ts index 48bff8ef3142..0a5100a75d4a 100644 --- a/packages/rspack-cli/src/utils/options.ts +++ b/packages/rspack-cli/src/utils/options.ts @@ -44,6 +44,12 @@ export const commonOptions = (yargs: yargs.Argv) => { type: "array", string: true, describe: "Name of the configuration to use." + }, + "config-loader": { + type: "string", + default: "register", + describe: + "Specify the loader to load the config file, can be `native` or `register`." } }) .alias({ v: "version", h: "help" });