diff --git a/cli/run/loadConfigFile.ts b/cli/run/loadConfigFile.ts index 70addb40dce..8f8c98ee534 100644 --- a/cli/run/loadConfigFile.ts +++ b/cli/run/loadConfigFile.ts @@ -103,12 +103,19 @@ async function getDefaultFromTranspiledConfigFile( return loadConfigFromBundledFile(fileName, code); } +function isSamePath(fileName1: string, fileName2: string): boolean { + if (process.platform === 'win32') { + return fileName1.toUpperCase() === fileName2.toUpperCase(); + } + return fileName1 === fileName2; +} + async function loadConfigFromBundledFile(fileName: string, bundledCode: string): Promise { const resolvedFileName = await fs.realpath(fileName); const extension = extname(resolvedFileName); const defaultLoader = require.extensions[extension]; require.extensions[extension] = (module: NodeModule, requiredFileName: string) => { - if (requiredFileName === resolvedFileName) { + if (isSamePath(requiredFileName, resolvedFileName)) { (module as NodeModuleWithCompile)._compile(bundledCode, requiredFileName); } else { defaultLoader(module, requiredFileName); diff --git a/scripts/load-perf-config.js b/scripts/load-perf-config.js index 647ee9b720f..24a1dcce432 100644 --- a/scripts/load-perf-config.js +++ b/scripts/load-perf-config.js @@ -28,7 +28,7 @@ exports.loadPerfConfig = async () => { function loadConfigFromCode(code) { const defaultLoader = require.extensions['.js']; require.extensions['.js'] = (module, filename) => { - if (filename === configFile) { + if (rollup.isSamePath(filename, configFile)) { module._compile(code, filename); } else { defaultLoader(module, filename); diff --git a/src/utils/path.ts b/src/utils/path.ts index 223db42fba7..bc94298a59b 100644 --- a/src/utils/path.ts +++ b/src/utils/path.ts @@ -15,4 +15,11 @@ export function normalize(path: string): string { return path.replace(BACKSLASH_REGEX, '/'); } +export function isSamePath(fileName1: string, fileName2: string): boolean { + if (process.platform === 'win32') { + return fileName1.toUpperCase() === fileName2.toUpperCase(); + } + return fileName1 === fileName2; +} + export { basename, dirname, extname, relative, resolve } from 'path'; diff --git a/src/utils/sanitizeFileName.ts b/src/utils/sanitizeFileName.ts index 26c0b328dad..a1e6f88178d 100644 --- a/src/utils/sanitizeFileName.ts +++ b/src/utils/sanitizeFileName.ts @@ -1,7 +1,7 @@ // https://datatracker.ietf.org/doc/html/rfc2396 // eslint-disable-next-line no-control-regex const INVALID_CHAR_REGEX = /[\x00-\x1F\x7F<>*#"{}|^[\]`;?:&=+$,]/g; -const DRIVE_LETTER_REGEX = /^[a-z]:/i; +const DRIVE_LETTER_REGEX = /^[a-zA-Z]:/i; export function sanitizeFileName(name: string): string { const match = DRIVE_LETTER_REGEX.exec(name);