From 3edb66d76d4b4c070780ce55bf20202c360db2bd Mon Sep 17 00:00:00 2001 From: Aaron Date: Mon, 5 Feb 2024 23:15:15 -0600 Subject: [PATCH] feat: Add option to customize the analysis output filename (#426) --- src/core/utils/building/internal-build.ts | 11 +++++++++-- src/core/utils/building/resolve-config.ts | 9 ++++++--- src/core/utils/testing/fake-objects.ts | 1 + src/types/index.ts | 8 ++++++++ 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/core/utils/building/internal-build.ts b/src/core/utils/building/internal-build.ts index c0962795..23e122f5 100644 --- a/src/core/utils/building/internal-build.ts +++ b/src/core/utils/building/internal-build.ts @@ -77,8 +77,9 @@ export async function internalBuild(): Promise { if (wxt.config.analysis.enabled) { await combineAnalysisStats(); + const statsPath = relative(wxt.config.root, wxt.config.analysis.outputFile); wxt.logger.info( - `Analysis complete:\n ${pc.gray('└─')} ${pc.yellow('stats.html')}`, + `Analysis complete:\n ${pc.gray('└─')} ${pc.yellow(statsPath)}`, ); } @@ -94,7 +95,13 @@ async function combineAnalysisStats(): Promise { await exec( 'rollup-plugin-visualizer', - [...absolutePaths, '--template', wxt.config.analysis.template], + [ + ...absolutePaths, + '--template', + wxt.config.analysis.template, + '--filename', + wxt.config.analysis.outputFile, + ], { cwd: wxt.config.root, stdio: 'inherit' }, ); await Promise.all(absolutePaths.map((statsFile) => fs.remove(statsFile))); diff --git a/src/core/utils/building/resolve-config.ts b/src/core/utils/building/resolve-config.ts index 56eac56b..cf6d352a 100644 --- a/src/core/utils/building/resolve-config.ts +++ b/src/core/utils/building/resolve-config.ts @@ -129,6 +129,10 @@ export async function resolveConfig( analysis: { enabled: mergedConfig.analysis?.enabled ?? false, template: mergedConfig.analysis?.template ?? 'treemap', + outputFile: path.resolve( + root, + mergedConfig.analysis?.outputFile ?? 'stats.html', + ), }, userConfigMetadata: userConfigMetadata ?? {}, alias, @@ -216,9 +220,8 @@ function mergeInlineConfig( outDir: inlineConfig.outDir ?? userConfig.outDir, zip, analysis: { - enabled: inlineConfig.analysis?.enabled ?? userConfig.analysis?.enabled, - template: - inlineConfig.analysis?.template ?? userConfig.analysis?.template, + ...userConfig.analysis, + ...inlineConfig.analysis, }, alias: { ...userConfig.alias, diff --git a/src/core/utils/testing/fake-objects.ts b/src/core/utils/testing/fake-objects.ts index a4091bb8..84d9af09 100644 --- a/src/core/utils/testing/fake-objects.ts +++ b/src/core/utils/testing/fake-objects.ts @@ -236,6 +236,7 @@ export const fakeResolvedConfig = fakeObjectCreator(() => { analysis: { enabled: false, template: 'treemap', + outputFile: 'stats.html', }, zip: { artifactTemplate: '{{name}}-{{version}}.zip', diff --git a/src/types/index.ts b/src/types/index.ts index 10812ca6..94131bb5 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -209,6 +209,12 @@ export interface InlineConfig { * @default "treemap" */ template?: PluginVisualizerOptions['template']; + /** + * Name of the output HTML file. Relative to the project's root directory. + * + * @default "stats.html" + */ + outputFile?: string; }; /** * Add additional paths to the `.wxt/tsconfig.json`. Use this instead of overwriting the `paths` @@ -895,6 +901,8 @@ export interface ResolvedConfig { analysis: { enabled: boolean; template: NonNullable; + /** Absolute file path */ + outputFile: string; }; userConfigMetadata: Omit, 'config'>; /**