Skip to content

Commit c33b33a

Browse files
authored
fix: only inject entry scripts as <script> (#46)
1 parent 7b72ba2 commit c33b33a

File tree

9 files changed

+16
-11
lines changed

9 files changed

+16
-11
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ jobs:
2222
- run: pnpm lint
2323
- run: pnpm build
2424
- run: pnpm vitest --coverage
25+
- run: pnpm tsc --noEmit
2526
- uses: codecov/codecov-action@v3

src/runtime.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,10 @@ export function getModuleDependencies (id: string, rendererContext: RendererCont
9494

9595
// Add to scripts + preload
9696
if (meta.file) {
97-
dependencies.scripts[id] = dependencies.preload[id] = rendererContext.manifest[id]
97+
dependencies.preload[id] = meta
98+
if (meta.isEntry || meta.sideEffects) {
99+
dependencies.scripts[id] = meta
100+
}
98101
}
99102

100103
// Add styles + preload

src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export interface ResourceMeta {
66
assets?: string[]
77
isEntry?: boolean
88
isDynamicEntry?: boolean
9+
sideEffects?: boolean
910
imports?: string[]
1011
dynamicImports?: string[]
1112
// Augmentation for vue-bundle-renderer

src/webpack.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ export function normalizeWebpackManifest (manifest: WebpackClientManifest): Mani
6464
throw new Error(`Invalid manifest - async module not in \`all\`: ${outfile}`)
6565
}
6666
clientManifest[identifier].isDynamicEntry = true
67+
clientManifest[identifier].sideEffects = true
6768
clientManifest[first].dynamicImports!.push(identifier)
6869
} else if (first) {
6970
// Add assets (CSS/JS) as dynamic imports to first entrypoints

test/compat.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import webpackManifest from './fixtures/webpack-manifest.json'
99

1010
describe('renderer with vite manifest', () => {
1111
const getRenderer = async () => {
12-
const renderer = createRenderer(() => { }, { manifest: normalizeViteManifest(viteManifest), renderToString: () => '' })
12+
const renderer = createRenderer(() => {}, { manifest: normalizeViteManifest(viteManifest), renderToString: () => '' })
1313
return await renderer.renderToString({
1414
modules: new Set([
1515
'app.vue',
@@ -23,8 +23,7 @@ describe('renderer with vite manifest', () => {
2323
const { renderScripts } = await getRenderer()
2424
const result = renderScripts().split('</script>').slice(0, -1).map(s => `${s}</script>`).sort()
2525
expect(result).to.deep.equal([
26-
'<script type="module" src="/entry.mjs" crossorigin></script>',
27-
'<script type="module" src="/index.mjs" crossorigin></script>'
26+
'<script type="module" src="/entry.mjs" crossorigin></script>'
2827
])
2928
})
3029
it('renders styles correctly', async () => {
@@ -55,7 +54,7 @@ describe('renderer with webpack manifest', () => {
5554
for (const entry in manifest) {
5655
manifest[entry].module = false
5756
}
58-
const renderer = createRenderer(() => { }, { manifest, buildAssetsURL: r => joinURL(webpackManifest.publicPath, r), renderToString: () => '' })
57+
const renderer = createRenderer(() => {}, { manifest, buildAssetsURL: r => joinURL(webpackManifest.publicPath, r), renderToString: () => '' })
5958
return await renderer.renderToString({
6059
_registeredComponents: new Set([
6160
'4d87aad8',

test/dependencies.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ describe('dependencies', () => {
1919
expect(Object.values(prefetch).map(i => i.file)).toMatchInlineSnapshot(`
2020
[
2121
"entry.png",
22-
"index.mjs",
2322
"index.css",
23+
"index.mjs",
2424
]
2525
`)
2626
expect(Object.values(preload).map(i => i.file)).toMatchInlineSnapshot(`
@@ -50,10 +50,10 @@ describe('dependencies', () => {
5050
expect(Object.values(prefetch).map(i => i.file)).toMatchInlineSnapshot(`
5151
[
5252
"entry.png",
53-
"index.mjs",
5453
"index.css",
55-
"lazy-component.mjs",
54+
"index.mjs",
5655
"lazy-component.css",
56+
"lazy-component.mjs",
5757
]
5858
`)
5959
expect(Object.values(preload).map(i => i.file)).toMatchInlineSnapshot(`
@@ -68,7 +68,6 @@ describe('dependencies', () => {
6868
expect(Object.values(scripts).map(i => i.file)).toMatchInlineSnapshot(`
6969
[
7070
"entry.mjs",
71-
"about.mjs",
7271
]
7372
`)
7473
expect(Object.values(styles).map(i => i.file)).toMatchInlineSnapshot(`

test/manifest.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,14 @@ describe('webpack manifest', () => {
6464
resourceType: 'script',
6565
file: 'pages/another.js',
6666
isDynamicEntry: true,
67+
sideEffects: true,
6768
module: true
6869
},
6970
'_pages/index.js': {
7071
resourceType: 'script',
7172
file: 'pages/index.js',
7273
isDynamicEntry: true,
74+
sideEffects: true,
7375
module: true
7476
},
7577
'_runtime.js': {

test/renderer.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ describe('renderer', () => {
2727
expect(result).toMatchInlineSnapshot(`
2828
[
2929
"<script type=\\"module\\" src=\\"/assets/entry.mjs\\" crossorigin></script>",
30-
"<script type=\\"module\\" src=\\"/assets/index.mjs\\" crossorigin></script>",
3130
]
3231
`)
3332
})

test/types.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ import type { Manifest, ResourceMeta } from '../src/types'
77
describe('manifest', () => {
88
it('matches vite types', () => {
99
expectTypeOf<ViteManifest>().toMatchTypeOf<Manifest>()
10-
expectTypeOf<ViteManifest>().toEqualTypeOf<Record<string, Omit<ResourceMeta, 'resourceType' | 'module' | 'mimeType'>>>()
10+
expectTypeOf<ViteManifest>().toEqualTypeOf<Record<string, Omit<ResourceMeta, 'resourceType' | 'module' | 'mimeType' | 'sideEffects'>>>()
1111
})
1212
})

0 commit comments

Comments
 (0)