feat(analysis): Open stats.html file automatically (#564)

This commit is contained in:
Aaron
2024-03-24 11:05:34 -05:00
committed by GitHub
parent 08f32aa685
commit 36b399dd49
8 changed files with 103 additions and 2 deletions
+7 -1
View File
@@ -57,6 +57,7 @@ cli
.option('--mv3', 'target manifest v3')
.option('--mv2', 'target manifest v2')
.option('--analyze', 'visualize extension bundle')
.option('--analyze-open', 'automatically open stats.html in browser')
.action(
wrapAction(async (root, flags) => {
await build({
@@ -66,7 +67,12 @@ cli
manifestVersion: flags.mv3 ? 3 : flags.mv2 ? 2 : undefined,
configFile: flags.config,
debug: flags.debug,
analysis: flags.analyze ? { enabled: true } : undefined,
analysis: flags.analyze
? {
enabled: true,
open: flags.analyzeOpen,
}
: undefined,
filterEntrypoints: getArrayFromFlags(flags, 'filterEntrypoint'),
});
}),
+10
View File
@@ -18,6 +18,7 @@ import {
import consola from 'consola';
import { wxt } from '../../wxt';
import { mergeJsonOutputs } from '@aklinker1/rollup-plugin-visualizer';
import { isCI } from 'ci-info';
/**
* Builds the extension based on an internal config. No more config discovery is performed, the
@@ -81,6 +82,15 @@ export async function internalBuild(): Promise<BuildOutput> {
wxt.logger.info(
`Analysis complete:\n ${pc.gray('└─')} ${pc.yellow(statsPath)}`,
);
if (wxt.config.analysis.open) {
if (isCI) {
wxt.logger.debug(`Skipped opening ${pc.yellow(statsPath)} in CI`);
} else {
wxt.logger.info(`Opening ${pc.yellow(statsPath)} in browser...`);
const { default: open } = await import('open');
open(wxt.config.analysis.outputFile);
}
}
}
return output;
@@ -149,6 +149,7 @@ export async function resolveConfig(
},
analysis: {
enabled: mergedConfig.analysis?.enabled ?? false,
open: mergedConfig.analysis?.open ?? false,
template: mergedConfig.analysis?.template ?? 'treemap',
outputFile: analysisOutputFile,
outputDir: analysisOutputDir,
+1
View File
@@ -273,6 +273,7 @@ export const fakeResolvedConfig = fakeObjectCreator<ResolvedConfig>(() => {
server: mock<WxtDevServer>(),
analysis: {
enabled: false,
open: false,
template: 'treemap',
outputFile: fakeFile(),
outputDir: fakeDir(),
+7
View File
@@ -229,6 +229,12 @@ export interface InlineConfig {
* @default false
*/
enabled?: boolean;
/**
* Set to true to automatically open the `stats.html` file when the build is finished. When building in CI, the browser will never open.
*
* @default false
*/
open?: boolean;
/**
* When running `wxt build --analyze` or setting `analysis.enabled` to true, customize how the
* bundle will be visualized. See
@@ -1033,6 +1039,7 @@ export interface ResolvedConfig {
transformManifest: (manifest: Manifest.WebExtensionManifest) => void;
analysis: {
enabled: boolean;
open: boolean;
template: NonNullable<PluginVisualizerOptions['template']>;
/** Absolute file path to the `stats.html` file */
outputFile: string;