From 72f1393b3e2539155cf7889960ca6aacf6c50095 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 21 Feb 2024 16:44:27 +0000 Subject: [PATCH] fix: display more info about fonts download --- package.json | 1 + pnpm-lock.yaml | 3 +++ src/assets.ts | 11 ++++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 0230f79..630d20b 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ }, "dependencies": { "@nuxt/kit": "^3.10.2", + "chalk": "^5.3.0", "css-tree": "^2.3.1", "defu": "^6.1.4", "fontaine": "^0.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6f4afa7..be37085 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: '@nuxt/kit': specifier: ^3.10.2 version: 3.10.2(rollup@3.29.4) + chalk: + specifier: ^5.3.0 + version: 5.3.0 css-tree: specifier: ^2.3.1 version: 2.3.1 diff --git a/src/assets.ts b/src/assets.ts index c83b3a7..deb1185 100644 --- a/src/assets.ts +++ b/src/assets.ts @@ -2,6 +2,7 @@ import fsp from 'node:fs/promises' import { addDevServerHandler, useNitro, useNuxt } from '@nuxt/kit' import { eventHandler, createError, lazyEventHandler } from 'h3' import { fetch } from 'ofetch' +import chalk from 'chalk' import { defu } from 'defu' import type { NitroConfig } from 'nitropack' import { hasProtocol, joinURL } from 'ufo' @@ -91,17 +92,25 @@ export function setupPublicAssetStrategy (options: ModuleOptions['assets'] = {}) nitro.hooks.hook('rollup:before', async () => { await fsp.rm(cacheDir, { recursive: true, force: true }) await fsp.mkdir(cacheDir, { recursive: true }) - logger.info('Downloading uncached fonts...') + let banner = false for (const [filename, url] of renderedFontURLs) { const key = 'data:fonts:' + filename // Use nitro.storage to cache the font data between builds let res = await nitro.storage.getItemRaw(key) if (!res) { + if (!banner) { + banner = true + logger.info('Downloading fonts...') + } + logger.log(chalk.gray(' ├─ ' + url)) res = await fetch(url).then(r => r.arrayBuffer()).then(r => Buffer.from(r)) await nitro.storage.setItemRaw(key, res) } await fsp.writeFile(join(cacheDir, filename), res) } + if (banner) { + logger.success('Fonts downloaded and cached.') + } }) })