From acf3a14ba357e330a6d207865edb9f9e078c7d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Thu, 30 Mar 2023 14:11:44 +0300 Subject: [PATCH] perf: improve isFileReadable performance (#12397) --- packages/vite/src/node/utils.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index a266c8cd661d29..68f26d95cf18cc 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -501,7 +501,14 @@ export function generateCodeFrame( export function isFileReadable(filename: string): boolean { try { + // The "throwIfNoEntry" is a performance optimization for cases where the file does not exist + if (!fs.statSync(filename, { throwIfNoEntry: false })) { + return false + } + + // Check if current process has read permission to the file fs.accessSync(filename, fs.constants.R_OK) + return true } catch { return false