Skip to content

Commit 111f973

Browse files
authored
feat: render crossorigin anonymous for scripts and script/font preloads (#27)
1 parent a617d5b commit 111f973

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

src/renderer.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,8 +328,9 @@ export function renderPreloadLinks (ssrContext: SSRContext, rendererContext: Ren
328328
const rel = file.type === 'module' ? 'modulepreload' : 'preload'
329329
const as = file.type ? file.type === 'module' ? ' as="script"' : ` as="${file.type}"` : ''
330330
const type = file.type === 'font' ? ` type="font/${file.extension}" crossorigin` : ''
331+
const crossorigin = file.type === 'font' || file.type === 'module' ? ' crossorigin' : ''
331332

332-
return `<link rel="${rel}" href="${rendererContext.publicPath}${file.path}"${as}${type}>`
333+
return `<link rel="${rel}" href="${rendererContext.publicPath}${file.path}"${as}${type}${crossorigin}>`
333334
}).join('')
334335
}
335336

@@ -347,7 +348,7 @@ export function renderPrefetchLinks (ssrContext: SSRContext, rendererContext: Re
347348
export function renderScripts (ssrContext: SSRContext, rendererContext: RendererContext): string {
348349
const { scripts } = getRequestDependencies(ssrContext, rendererContext)
349350
return Object.values(scripts).map(({ path, type }) =>
350-
`<script${type === 'module' ? ' type="module"' : ''} src="${rendererContext.publicPath}${path}"${type !== 'module' ? ' defer' : ''}></script>`
351+
`<script${type === 'module' ? ' type="module"' : ''} src="${rendererContext.publicPath}${path}"${type !== 'module' ? ' defer' : ''} crossorigin></script>`
351352
).join('')
352353
}
353354

test/renderer.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ describe('renderer', () => {
2121
const { renderScripts } = await getRenderer()
2222
const result = renderScripts().split('</script>').slice(0, -1).map(s => `${s}</script>`).sort()
2323
expect(result).to.deep.equal([
24-
'<script type="module" src="/entry.mjs"></script>',
25-
'<script type="module" src="/index.mjs"></script>'
24+
'<script type="module" src="/entry.mjs" crossorigin></script>',
25+
'<script type="module" src="/index.mjs" crossorigin></script>'
2626
])
2727
})
2828
it('renders styles correctly', async () => {
@@ -36,9 +36,9 @@ describe('renderer', () => {
3636
const result = renderResourceHints().split('>').slice(0, -1).map(s => `${s}>`).sort()
3737
expect(result).to.deep.equal(
3838
[
39-
'<link rel="modulepreload" href="/entry.mjs" as="script">',
40-
'<link rel="modulepreload" href="/index.mjs" as="script">',
41-
'<link rel="modulepreload" href="/vendor.mjs" as="script">',
39+
'<link rel="modulepreload" href="/entry.mjs" as="script" crossorigin>',
40+
'<link rel="modulepreload" href="/index.mjs" as="script" crossorigin>',
41+
'<link rel="modulepreload" href="/vendor.mjs" as="script" crossorigin>',
4242
'<link rel="preload" href="/index.css" as="style">'
4343
]
4444
)
@@ -62,9 +62,9 @@ describe('renderer with legacy manifest', () => {
6262
const result = renderScripts().split('</script>').slice(0, -1).map(s => `${s}</script>`).sort()
6363
expect(result).to.deep.equal(
6464
[
65-
'<script src="/_nuxt/app.js" defer></script>',
66-
'<script src="/_nuxt/commons/app.js" defer></script>',
67-
'<script src="/_nuxt/runtime.js" defer></script>'
65+
'<script src="/_nuxt/app.js" defer crossorigin></script>',
66+
'<script src="/_nuxt/commons/app.js" defer crossorigin></script>',
67+
'<script src="/_nuxt/runtime.js" defer crossorigin></script>'
6868
]
6969
)
7070
})

0 commit comments

Comments
 (0)