diff --git a/scripts/prepare/index.mjs b/scripts/prepare/index.mjs index 11b48dec..e89ae804 100644 --- a/scripts/prepare/index.mjs +++ b/scripts/prepare/index.mjs @@ -1,5 +1,11 @@ import { execFileSync } from 'node:child_process'; -import { mkdirSync, rmSync, unlinkSync } from 'node:fs'; +import { + existsSync, + mkdirSync, + rmSync, + unlinkSync, + writeFileSync, +} from 'node:fs'; import { readFile } from 'node:fs/promises'; import { join } from 'node:path'; @@ -12,6 +18,13 @@ const execOptions = { }; const fetchWebpack = version => { + const destination = join(CACHE_DIR, version); + const completionMarker = join(destination, '.complete'); + + if (existsSync(completionMarker)) { + console.log(`Using cached webpack ${version}`); + return; + } console.log(`Fetching webpack ${version}`); const result = JSON.parse( @@ -23,7 +36,6 @@ const fetchWebpack = version => { ); const { filename } = Array.isArray(result) ? result[0] : result; const archive = join(CACHE_DIR, filename); - const destination = join(CACHE_DIR, version); rmSync(destination, { recursive: true, force: true }); mkdirSync(destination, { recursive: true }); @@ -33,9 +45,9 @@ const fetchWebpack = version => { execOptions ); unlinkSync(archive); + writeFileSync(completionMarker, ''); }; -rmSync(CACHE_DIR, { recursive: true, force: true }); mkdirSync(CACHE_DIR, { recursive: true }); const versions = JSON.parse(await readFile('./versions.json'));