diff --git a/lib/compiler/defaults/swc-defaults.ts b/lib/compiler/defaults/swc-defaults.ts index 3d00633fb..ab9144fc1 100644 --- a/lib/compiler/defaults/swc-defaults.ts +++ b/lib/compiler/defaults/swc-defaults.ts @@ -34,7 +34,7 @@ export const swcDefaultsFactory = ( swcrc: true, }, cliOptions: { - outDir: tsOptions.outDir ?? 'dist', + outDir: tsOptions.outDir ? convertPath(tsOptions.outDir) : 'dist', filenames: [configuration?.sourceRoot ?? 'src'], sync: false, extensions: ['.js', '.ts'], @@ -46,3 +46,14 @@ export const swcDefaultsFactory = ( }, }; }; + +/** + * Converts Windows specific file paths to posix + * @param windowsPath + */ +function convertPath(windowsPath: string) { + return windowsPath + .replace(/^\\\\\?\\/, '') + .replace(/\\/g, '/') + .replace(/\/\/+/g, '/'); +} diff --git a/lib/compiler/swc/swc-compiler.ts b/lib/compiler/swc/swc-compiler.ts index af0b6bc49..d76071dff 100644 --- a/lib/compiler/swc/swc-compiler.ts +++ b/lib/compiler/swc/swc-compiler.ts @@ -3,6 +3,7 @@ import { fork } from 'child_process'; import * as chokidar from 'chokidar'; import { readFileSync } from 'fs'; import { join } from 'path'; +import { isAbsolute } from 'path/posix'; import * as ts from 'typescript'; import { Configuration } from '../../configuration'; import { ERROR_PREFIX } from '../../ui'; @@ -236,8 +237,11 @@ export class SwcCompiler extends BaseCompiler { options: ReturnType, onChange: () => void, ) { - const outDir = join(process.cwd(), options.cliOptions.outDir!, '**/*.js'); - const watcher = chokidar.watch(outDir, { + const dir = isAbsolute(options.cliOptions.outDir!) + ? options.cliOptions.outDir! + : join(process.cwd(), options.cliOptions.outDir!); + const paths = join(dir, '**/*.js'); + const watcher = chokidar.watch(paths, { ignoreInitial: true, awaitWriteFinish: { stabilityThreshold: 50,