diff --git a/src/core/utils/getInternalConfig.ts b/src/core/utils/getInternalConfig.ts index 034428d30..3ebcc3169 100644 --- a/src/core/utils/getInternalConfig.ts +++ b/src/core/utils/getInternalConfig.ts @@ -122,6 +122,7 @@ export async function getInternalConfig( ); finalConfig.vite.plugins.push(plugins.devServerGlobals(finalConfig)); finalConfig.vite.plugins.push(plugins.tsconfigPaths(finalConfig)); + finalConfig.vite.plugins.push(plugins.hmrLogger(finalConfig)); finalConfig.vite.define ??= {}; getGlobals(finalConfig).forEach((global) => { diff --git a/src/core/vite-plugins/hmrLogger.ts b/src/core/vite-plugins/hmrLogger.ts new file mode 100644 index 000000000..f3e6e4f58 --- /dev/null +++ b/src/core/vite-plugins/hmrLogger.ts @@ -0,0 +1,25 @@ +import { Plugin } from 'vite'; +import { InternalConfig } from '../types'; +import { relative } from 'path'; +import pc from 'picocolors'; + +/** + * Log when HMR changes are fired + */ +export function hmrLogger(config: InternalConfig): Plugin { + return { + name: 'wxt:hmr-logger', + apply: 'serve', + handleHotUpdate(ctx) { + if ( + ctx.file.startsWith(config.srcDir) && + !ctx.file.startsWith(config.wxtDir) && + !ctx.file.endsWith('.html') + ) { + config.logger.info( + 'Hot reload: ' + pc.dim(relative(process.cwd(), ctx.file)), + ); + } + }, + }; +} diff --git a/src/core/vite-plugins/index.ts b/src/core/vite-plugins/index.ts index 8264ce4b7..e8c01a673 100644 --- a/src/core/vite-plugins/index.ts +++ b/src/core/vite-plugins/index.ts @@ -5,3 +5,4 @@ export * from './multipageMove'; export * from './unimport'; export * from './virtualEntrypoint'; export * from './tsconfigPaths'; +export * from './hmrLogger'; diff --git a/src/index.ts b/src/index.ts index 5bf5cd081..33d44de32 100644 --- a/src/index.ts +++ b/src/index.ts @@ -64,7 +64,7 @@ export async function createServer( if (changes.type === 'no-change') return; // Log the entrypoints that were effected - consola.info( + internalConfig.logger.info( `Changed: ${Array.from(new Set(fileChanges.map((change) => change[1]))) .map((file) => pc.dim(relative(internalConfig.root, file))) .join(', ')}`,