mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-17 11:20:37 +09:00
30 lines
892 B
TypeScript
30 lines
892 B
TypeScript
|
|
const TEST_DIRECTORY_NAMES = new Set([
|
||
|
|
"__tests__",
|
||
|
|
"_tests",
|
||
|
|
"test",
|
||
|
|
"tests",
|
||
|
|
]);
|
||
|
|
|
||
|
|
const TEST_FILE_BASENAME_RE = /\.(test|spec)\.[^/]+$/i;
|
||
|
|
|
||
|
|
export function shouldIgnoreUiDevWatchPath(watchedPath: string): boolean {
|
||
|
|
const normalizedPath = String(watchedPath).replaceAll("\\", "/");
|
||
|
|
if (normalizedPath.length === 0) return false;
|
||
|
|
|
||
|
|
const segments = normalizedPath.split("/");
|
||
|
|
const basename = segments.at(-1) ?? normalizedPath;
|
||
|
|
|
||
|
|
return segments.some((segment) => TEST_DIRECTORY_NAMES.has(segment))
|
||
|
|
|| TEST_FILE_BASENAME_RE.test(basename);
|
||
|
|
}
|
||
|
|
|
||
|
|
export function createUiDevWatchOptions(currentWorkingDirectory: string) {
|
||
|
|
return {
|
||
|
|
ignored: shouldIgnoreUiDevWatchPath,
|
||
|
|
// WSL2 /mnt/ drives don't support inotify — fall back to polling so HMR works.
|
||
|
|
...(currentWorkingDirectory.startsWith("/mnt/")
|
||
|
|
? { usePolling: true, interval: 1000 }
|
||
|
|
: {}),
|
||
|
|
};
|
||
|
|
}
|