File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -393,8 +393,12 @@ export const createRsbuildServer = async ({
393393 ) ;
394394 }
395395
396+ // Ensure that when readFile is called in parallel, the file content will not be read into memory repeatedly
397+ const cachedReadFilePromises = new Map < string , Promise < string > > ( ) ;
396398 const readFile = async ( fileName : string ) => {
397- return new Promise < string > ( ( resolve , reject ) => {
399+ if ( cachedReadFilePromises . has ( fileName ) )
400+ return cachedReadFilePromises . get ( fileName ) ! ;
401+ const promise = new Promise < string > ( ( resolve , reject ) => {
398402 outputFileSystem . readFile ( fileName , ( err , data ) => {
399403 if ( err ) {
400404 reject ( err ) ;
@@ -409,6 +413,9 @@ export const createRsbuildServer = async ({
409413 resolve ( content ) ;
410414 } ) ;
411415 } ) ;
416+ cachedReadFilePromises . set ( fileName , promise ) ;
417+ promise . finally ( ( ) => cachedReadFilePromises . delete ( fileName ) ) ;
418+ return promise ;
412419 } ;
413420
414421 const buildData : Record <
You can’t perform that action at this time.
0 commit comments