From 650ca8fbf3a8b3687cb4cddbb503dfb6dead8bed Mon Sep 17 00:00:00 2001 From: KazariEX Date: Thu, 2 Jul 2026 14:33:43 +0800 Subject: [PATCH 1/2] feat: compat with Nitro 3 --- src/assets.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/assets.ts b/src/assets.ts index a72970c4..12e7e627 100644 --- a/src/assets.ts +++ b/src/assets.ts @@ -8,7 +8,7 @@ import { colors } from 'consola/utils' import { defu } from 'defu' import type { NitroConfig } from 'nitropack' import { joinURL } from 'ufo' -import { join } from 'pathe' +import { join, basename } from 'pathe' import { normalizeFontData } from 'fontless' import type { NormalizeFontDataContext } from 'fontless' @@ -29,8 +29,8 @@ export async function setupPublicAssetStrategy(options: ModuleOptions['assets'] // Register font proxy URL for development async function devEventHandler(event: H3Event) { - const filename = event.path.slice(1) - const url = context.renderedFontURLs.get(event.path.slice(1)) + const filename = basename(event.path) + const url = context.renderedFontURLs.get(filename) if (!url) { throw createError({ statusCode: 404 }) } @@ -47,7 +47,7 @@ export async function setupPublicAssetStrategy(options: ModuleOptions['assets'] } addDevServerHandler({ - route: joinURL(nuxt.options.runtimeConfig.app.baseURL || nuxt.options.app.baseURL, context.assetsBaseURL), + route: joinURL(nuxt.options.runtimeConfig.app.baseURL || nuxt.options.app.baseURL, context.assetsBaseURL, '**'), handler: eventHandler(devEventHandler), }) @@ -89,6 +89,7 @@ export async function setupPublicAssetStrategy(options: ModuleOptions['assets'] dir: cacheDir, maxAge: ONE_YEAR_IN_SECONDS, baseURL: context.assetsBaseURL, + fallthrough: nuxt.options.dev, }], ignore: [`!${join(cacheDir, '**/*')}`], prerender: { From 7b2e347baa49c9525808a062adfc5a9e278d1387 Mon Sep 17 00:00:00 2001 From: KazariEX Date: Wed, 29 Jul 2026 08:27:12 +0800 Subject: [PATCH 2/2] fix: choose different routes depended on nuxt version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Balázs Németh --- src/assets.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/assets.ts b/src/assets.ts index 12e7e627..b9387155 100644 --- a/src/assets.ts +++ b/src/assets.ts @@ -1,6 +1,6 @@ import fsp from 'node:fs/promises' import { writeFileSync } from 'node:fs' -import { addDevServerHandler, addVitePlugin, useNuxt } from '@nuxt/kit' +import { addDevServerHandler, addVitePlugin, useNuxt, isNuxtMajorVersion } from '@nuxt/kit' import type { H3Event } from 'h3' import { eventHandler, createEvent, createError, setResponseHeader } from 'h3' import { $fetch } from 'ofetch' @@ -20,6 +20,9 @@ import type { ModuleOptions } from './types' export async function setupPublicAssetStrategy(options: ModuleOptions['assets'] = {}) { const nuxt = useNuxt() + // @ts-expect-error 5 cannot satisfy 2 | 3 | 4 + const isNuxt5 = isNuxtMajorVersion(5, nuxt) + const context: NormalizeFontDataContext = { dev: nuxt.options.dev, renderedFontURLs: new Map(), @@ -47,7 +50,9 @@ export async function setupPublicAssetStrategy(options: ModuleOptions['assets'] } addDevServerHandler({ - route: joinURL(nuxt.options.runtimeConfig.app.baseURL || nuxt.options.app.baseURL, context.assetsBaseURL, '**'), + route: isNuxt5 + ? joinURL(nuxt.options.runtimeConfig.app.baseURL || nuxt.options.app.baseURL, context.assetsBaseURL, '**') + : joinURL(nuxt.options.runtimeConfig.app.baseURL || nuxt.options.app.baseURL, context.assetsBaseURL), handler: eventHandler(devEventHandler), })