diff --git a/src/plugins/transform.ts b/src/plugins/transform.ts index 903e662c..3e988c5e 100644 --- a/src/plugins/transform.ts +++ b/src/plugins/transform.ts @@ -10,7 +10,7 @@ import { hasProtocol, parseURL, joinURL } from 'ufo' import { hash as ohash } from 'ohash' import { join } from 'pathe' import { colors } from 'consola/utils' -import { useNuxt } from '@nuxt/kit' +import { tryUseNuxt, useNuxt } from '@nuxt/kit' import { logger } from '../logger' import { storage } from '../assets' import { isJS, isVue } from './util' @@ -41,7 +41,8 @@ function normalizeScriptData(src: string, assetsBaseURL: string = '/_scripts'): const file = [ `${ohash(url)}.js`, // force an extension ].filter(Boolean).join('-') - return { url: joinURL(assetsBaseURL, file), filename: file } + const nuxt = tryUseNuxt() + return { url: joinURL(joinURL(nuxt?.options.app.baseURL || '', assetsBaseURL), file), filename: file } } return { url: src } } diff --git a/test/e2e/base.test.ts b/test/e2e/base.test.ts new file mode 100644 index 00000000..5ad1b1cc --- /dev/null +++ b/test/e2e/base.test.ts @@ -0,0 +1,26 @@ +import { describe, expect, it } from 'vitest' +import { createResolver } from '@nuxt/kit' +import { createPage, setup } from '@nuxt/test-utils/e2e' + +const { resolve } = createResolver(import.meta.url) + +await setup({ + rootDir: resolve('../fixtures/basic'), + // dev: true, + browser: true, + nuxtConfig: { + app: { + baseURL: '/foo', + }, + }, +}) + +describe('base', () => { + it('bundle', async () => { + const page = await createPage('/foo/bundle-use-script') + await page.waitForTimeout(500) + // get content of #script-src + const text = await page.$eval('#script-src', el => el.textContent) + expect(text).toMatchInlineSnapshot(`"/foo/_scripts/6nd5bD9YCW.js"`) + }) +})