mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-26 23:52:06 +00:00
fix(vue-renderer): respect injectScripts for target:static (#8912)
This commit is contained in:
parent
880fe4abd7
commit
07e97f168a
@ -177,7 +177,7 @@ export default class SSRRenderer extends BaseRenderer {
|
||||
const shouldHashCspScriptSrc = csp && (csp.unsafeInlineCompatibility || !containsUnsafeInlineScriptSrc)
|
||||
const inlineScripts = []
|
||||
|
||||
if (renderContext.staticAssetsBase) {
|
||||
if (shouldInjectScripts && renderContext.staticAssetsBase) {
|
||||
const preloadScripts = []
|
||||
renderContext.staticAssets = []
|
||||
const { staticAssetsBase, url, nuxt, staticAssets } = renderContext
|
||||
|
@ -14,55 +14,76 @@ let builder
|
||||
let server = null
|
||||
let generator = null
|
||||
|
||||
const generateAndStartServer = async (overrides) => {
|
||||
const config = await loadFixture('full-static', {
|
||||
generate: {
|
||||
static: false,
|
||||
dir: '.nuxt-generate'
|
||||
},
|
||||
...(overrides || {})
|
||||
})
|
||||
const nuxt = new Nuxt(config)
|
||||
await nuxt.ready()
|
||||
|
||||
builder = new Builder(nuxt)
|
||||
builder.build = jest.fn()
|
||||
generator = new Generator(nuxt, builder)
|
||||
|
||||
await generator.generate()
|
||||
|
||||
const serve = serveStatic(distDir)
|
||||
server = http.createServer((req, res) => {
|
||||
serve(req, res, finalhandler(req, res))
|
||||
})
|
||||
|
||||
port = await getPort()
|
||||
server.listen(port)
|
||||
}
|
||||
|
||||
describe('full-static', () => {
|
||||
beforeAll(async () => {
|
||||
const config = await loadFixture('full-static', {
|
||||
generate: {
|
||||
static: false,
|
||||
dir: '.nuxt-generate'
|
||||
}
|
||||
})
|
||||
const nuxt = new Nuxt(config)
|
||||
await nuxt.ready()
|
||||
describe('with scripts', () => {
|
||||
beforeAll(async () => await generateAndStartServer())
|
||||
|
||||
builder = new Builder(nuxt)
|
||||
builder.build = jest.fn()
|
||||
generator = new Generator(nuxt, builder)
|
||||
test('/payload (custom build.publicPath)', async () => {
|
||||
const { body: html } = await rp(url('/payload'))
|
||||
|
||||
await generator.generate()
|
||||
|
||||
const serve = serveStatic(distDir)
|
||||
server = http.createServer((req, res) => {
|
||||
serve(req, res, finalhandler(req, res))
|
||||
expect(html).toContain('<script src="https://cdn.nuxtjs.org/test/')
|
||||
expect(html).toContain(
|
||||
'<link rel="preload" href="https://cdn.nuxtjs.org/test/_nuxt/static/'
|
||||
)
|
||||
})
|
||||
|
||||
port = await getPort()
|
||||
server.listen(port)
|
||||
})
|
||||
test('/encoding/中文', async () => {
|
||||
const { body: html } = await rp(url('/encoding/中文'))
|
||||
|
||||
test('/payload (custom build.publicPath)', async () => {
|
||||
const { body: html } = await rp(url('/payload'))
|
||||
const paths = ['encoding/中文/state.js', 'encoding/中文/payload.js']
|
||||
|
||||
expect(html).toContain('<script src="https://cdn.nuxtjs.org/test/')
|
||||
expect(html).toContain(
|
||||
'<link rel="preload" href="https://cdn.nuxtjs.org/test/_nuxt/static/'
|
||||
)
|
||||
})
|
||||
paths.forEach((path) => {
|
||||
const files = glob.sync(join(distDir, '**', path))
|
||||
expect(html).toContain(encodeURI(path))
|
||||
expect(files).toContainEqual(expect.stringContaining(path))
|
||||
})
|
||||
})
|
||||
|
||||
test('/encoding/中文', async () => {
|
||||
const { body: html } = await rp(url('/encoding/中文'))
|
||||
|
||||
const paths = ['encoding/中文/state.js', 'encoding/中文/payload.js']
|
||||
|
||||
paths.forEach((path) => {
|
||||
const files = glob.sync(join(distDir, '**', path))
|
||||
expect(html).toContain(encodeURI(path))
|
||||
expect(files).toContainEqual(expect.stringContaining(path))
|
||||
// Close server and ask nuxt to stop listening to file changes
|
||||
afterAll(async () => {
|
||||
await server.close()
|
||||
})
|
||||
})
|
||||
|
||||
// Close server and ask nuxt to stop listening to file changes
|
||||
afterAll(async () => {
|
||||
await server.close()
|
||||
describe('without scripts', () => {
|
||||
beforeAll(async () => await generateAndStartServer({ render: { injectScripts: false } }))
|
||||
|
||||
test('should not inject scripts', async () => {
|
||||
const { body: html } = await rp(url('/payload'))
|
||||
|
||||
expect(html).not.toContain('<script')
|
||||
expect(html).not.toContain('<link')
|
||||
})
|
||||
|
||||
// Close server and ask nuxt to stop listening to file changes
|
||||
afterAll(async () => {
|
||||
await server.close()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user