From 4662d2fa18d1f9049e0366a9bbb09e24ced4526b Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Tue, 17 Sep 2024 12:15:40 +0200 Subject: [PATCH] prevent filename collision in core metafiles --- code/.storybook/bench.stories.tsx | 10 ++++++---- code/core/scripts/prep.ts | 5 +++-- scripts/prepare/addon-bundle.ts | 2 +- scripts/prepare/bundle.ts | 9 +++++---- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/code/.storybook/bench.stories.tsx b/code/.storybook/bench.stories.tsx index 4ebee5268c8..4f5936cfa9d 100644 --- a/code/.storybook/bench.stories.tsx +++ b/code/.storybook/bench.stories.tsx @@ -7,8 +7,8 @@ const allMetafiles = import.meta.glob( [ '../../bench/esbuild-metafiles/**/*.json', // the following metafiles are too big to be loaded automatically in the iframe - '!**/core-cjs-0.json', - '!**/core-esm-2.json', + '!**/core-0.cjs.json', + '!**/core-2.esm.json', ], { // eagerly loading is not ideal because it imports all metafiles upfront, @@ -26,7 +26,7 @@ const METAFILE_DIR_PKG_NAME_MAP = { docs: '@storybook/addon-docs', 'addon-test': '@storybook/experimental-addon-test', } as const; -const TOO_BIG_METAFILES = ['@storybook/core core-cjs-0', '@storybook/core core-esm-2']; +const TOO_BIG_METAFILES = ['@storybook/core core-0.cjs', '@storybook/core core-2.esm']; // allows the metafile path to be used in the URL hash const safeMetafileArg = (path: string) => @@ -117,4 +117,6 @@ export default { }, } satisfies Meta; -export const Metafiles = {}; +export const ESBuildAnalyzer = { + name: 'ESBuild Metafiles', +}; diff --git a/code/core/scripts/prep.ts b/code/core/scripts/prep.ts index 308ff628c63..4bbb221e1cc 100644 --- a/code/core/scripts/prep.ts +++ b/code/core/scripts/prep.ts @@ -325,8 +325,9 @@ async function run() { const { outputs } = out.metafile; const keys = Object.keys(outputs); const format = keys.every((key) => key.endsWith('.js')) ? 'esm' : 'cjs'; - const basename = - keys.length === 1 ? dirname(keys[0]).replace('dist/', '') : `core-${format}-${index}`; + const moduleName = + keys.length === 1 ? dirname(keys[0]).replace('dist/', '') : `core-${index}`; + const basename = `${moduleName}.${format}`; await writeFile( join(metafilesDir, `${basename}.json`), diff --git a/scripts/prepare/addon-bundle.ts b/scripts/prepare/addon-bundle.ts index 6a1f4ba58f7..72a89c0919e 100755 --- a/scripts/prepare/addon-bundle.ts +++ b/scripts/prepare/addon-bundle.ts @@ -353,7 +353,7 @@ async function saveMetafiles({ await Promise.all( formats.map(async (format) => { const fromFilename = `metafile-${format}.json`; - const toBasename = `${name}-${format}`; + const toBasename = `${name}.${format}`; const metafile = await fs.readJson(join(OUT_DIR, fromFilename)); await fs.move(join(OUT_DIR, fromFilename), join(METAFILES_DIR, `${toBasename}.json`), { diff --git a/scripts/prepare/bundle.ts b/scripts/prepare/bundle.ts index 4cdd887094c..2b9509b6ea6 100755 --- a/scripts/prepare/bundle.ts +++ b/scripts/prepare/bundle.ts @@ -246,13 +246,14 @@ async function saveMetafiles({ formats }: { formats: Formats[] }) { await fs.ensureDir(METAFILES_DIR); await Promise.all( formats.map(async (format) => { - const basename = `metafile-${format}`; - const metafile = await fs.readJson(join(OUT_DIR, `${basename}.json`)); - await fs.move(join(OUT_DIR, `${basename}.json`), join(METAFILES_DIR, `${basename}.json`), { + const fromFilename = `metafile-${format}.json`; + const toBasename = `metafile.${format}`; + const metafile = await fs.readJson(join(OUT_DIR, fromFilename)); + await fs.move(join(OUT_DIR, fromFilename), join(METAFILES_DIR, `${toBasename}.json`), { overwrite: true, }); await writeFile( - join(METAFILES_DIR, `${basename}.txt`), + join(METAFILES_DIR, `${toBasename}.txt`), await esbuild.analyzeMetafile(metafile, { color: false, verbose: false }) ); })