Skip to content

Commit 42e5a80

Browse files
committed
fix(vapor): handle vapor mode with empty script
1 parent c6fe9f9 commit 42e5a80

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

packages/compiler-sfc/__tests__/parse.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,17 @@ h1 { color: red }
381381
})
382382
})
383383

384+
describe('vapor mode', () => {
385+
test('on empty script', () => {
386+
const { descriptor } = parse(`<script vapor></script>`)
387+
expect(descriptor.vapor).toBe(true)
388+
})
389+
test('on template', () => {
390+
const { descriptor } = parse(`<template vapor><div/></template>`)
391+
expect(descriptor.vapor).toBe(true)
392+
})
393+
})
394+
384395
describe('warnings', () => {
385396
function assertWarning(errors: Error[], msg: string) {
386397
expect(errors.some(e => e.message.match(msg))).toBe(true)

packages/compiler-sfc/src/parse.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,9 @@ export function parse(
162162
ignoreEmpty &&
163163
node.tag !== 'template' &&
164164
isEmpty(node) &&
165-
!hasSrc(node)
165+
!hasProp(node, 'src')
166166
) {
167+
descriptor.vapor ||= hasProp(node, 'vapor')
167168
return
168169
}
169170
switch (node.tag) {
@@ -409,12 +410,12 @@ function padContent(
409410
}
410411
}
411412

412-
function hasSrc(node: ElementNode) {
413+
function hasProp(node: ElementNode, name: string) {
413414
return node.props.some(p => {
414415
if (p.type !== NodeTypes.ATTRIBUTE) {
415416
return false
416417
}
417-
return p.name === 'src'
418+
return p.name === name
418419
})
419420
}
420421

0 commit comments

Comments
 (0)