diff --git a/webpack.config.js b/webpack.config.js index 9d640c7..985d53f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -91,7 +91,10 @@ function getExtensionConfig(target, mode, env) { plugins.push( new FantasticonPlugin({ configPath: '.fantasticonrc.js', - onBefore: () => + onBefore: + mode !== 'production' + ? undefined + : () => spawnSync('yarn', ['run', 'icons:svgo'], { cwd: __dirname, encoding: 'utf8', @@ -764,18 +767,40 @@ class FantasticonPlugin { } const logger = compiler.getInfrastructureLogger(this.pluginName); - logger.log(`Generating icon font...`); + logger.log(`Generating '${compiler.name}' icon font...`); const start = Date.now(); - await onBefore?.(fontConfig); + let onBeforeDuration = 0; + if (onBefore != null) { + const start = Date.now(); + await onBefore(fontConfig); + onBeforeDuration = Date.now() - start; + } + await generateFonts(fontConfig); - await onComplete?.(fontConfig); - logger.log(`Generated icon font in \x1b[32m${Date.now() - start}ms\x1b[0m`); + let onCompleteDuration = 0; + if (onComplete != null) { + const start = Date.now(); + await onComplete(fontConfig); + onCompleteDuration = Date.now() - start; + } + + let suffix = ''; + if (onBeforeDuration > 0 || onCompleteDuration > 0) { + suffix = ` (${onBeforeDuration > 0 ? `onBefore: ${onBeforeDuration}ms` : ''}${ + onCompleteDuration > 0 + ? `${onBeforeDuration > 0 ? ', ' : ''}onComplete: ${onCompleteDuration}ms` + : '' + })`; + } + + logger.log(`Generated '${compiler.name}' icon font in \x1b[32m${Date.now() - start}ms\x1b[0m${suffix}`); } - compiler.hooks.beforeRun.tapPromise(this.pluginName, generate.bind(this)); - compiler.hooks.watchRun.tapPromise(this.pluginName, generate.bind(this)); + const generateFn = generate.bind(this); + compiler.hooks.beforeRun.tapPromise(this.pluginName, generateFn); + compiler.hooks.watchRun.tapPromise(this.pluginName, generateFn); } }