From 46cc735bcc06a19c6cac9176b043ef07284783fe Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Fri, 23 Sep 2022 16:41:52 +0200 Subject: [PATCH] Defer creation of cache directory We've been redundantly telling the system to re-create the cache directory for transformed files, even when just looking up already-transformed ones. This syscall has a light impact when occurring in large codebases. Improve this by deferring `createDirectory` until right before we save the "transform result". Signed-off-by: Mitchell Hentges --- .../jest-transform/src/ScriptTransformer.ts | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/jest-transform/src/ScriptTransformer.ts b/packages/jest-transform/src/ScriptTransformer.ts index 82df9931f7fa..c1d12d8deef9 100644 --- a/packages/jest-transform/src/ScriptTransformer.ts +++ b/packages/jest-transform/src/ScriptTransformer.ts @@ -207,10 +207,7 @@ class ScriptTransformer { ); } - private _createFolderFromCacheKey( - filename: string, - cacheKey: string, - ): string { + private _createCachedFilename(filename: string, cacheKey: string): string { const HasteMapClass = HasteMap.getStatic(this._config); const baseCacheDir = HasteMapClass.getCacheFilePath( this._config.cacheDirectory, @@ -223,12 +220,7 @@ class ScriptTransformer { const cacheFilenamePrefix = path .basename(filename, path.extname(filename)) .replace(/\W/g, ''); - const cachePath = slash( - path.join(cacheDir, `${cacheFilenamePrefix}_${cacheKey}`), - ); - createDirectory(cacheDir); - - return cachePath; + return slash(path.join(cacheDir, `${cacheFilenamePrefix}_${cacheKey}`)); } private _getFileCachePath( @@ -238,7 +230,7 @@ class ScriptTransformer { ): string { const cacheKey = this._getCacheKey(content, filename, options); - return this._createFolderFromCacheKey(filename, cacheKey); + return this._createCachedFilename(filename, cacheKey); } private async _getFileCachePathAsync( @@ -248,7 +240,7 @@ class ScriptTransformer { ): Promise { const cacheKey = await this._getCacheKeyAsync(content, filename, options); - return this._createFolderFromCacheKey(filename, cacheKey); + return this._createCachedFilename(filename, cacheKey); } private _getTransformPath(filename: string) { @@ -504,6 +496,7 @@ class ScriptTransformer { }); } + createDirectory(path.dirname(cacheFilePath)); return this._buildTransformResult( filename, cacheFilePath, @@ -568,6 +561,7 @@ class ScriptTransformer { }); } + createDirectory(path.dirname(cacheFilePath)); return this._buildTransformResult( filename, cacheFilePath,