diff --git a/packages/compiler-core/src/ast.ts b/packages/compiler-core/src/ast.ts
index bae13372a..dfcc1bef3 100644
--- a/packages/compiler-core/src/ast.ts
+++ b/packages/compiler-core/src/ast.ts
@@ -163,6 +163,7 @@ export interface ComponentNode extends BaseElementNode {
| MemoExpression // when cached by v-memo
| undefined
ssrCodegenNode?: CallExpression
+ anchor?: string
}
export interface SlotOutletNode extends BaseElementNode {
@@ -172,6 +173,7 @@ export interface SlotOutletNode extends BaseElementNode {
| CacheExpression // when cached by v-once
| undefined
ssrCodegenNode?: CallExpression
+ anchor?: string
}
export interface TemplateNode extends BaseElementNode {
@@ -287,6 +289,7 @@ export interface IfNode extends Node {
type: NodeTypes.IF
branches: IfBranchNode[]
codegenNode?: IfConditionalExpression | CacheExpression //
+ anchor?: string
}
export interface IfBranchNode extends Node {
@@ -306,6 +309,7 @@ export interface ForNode extends Node {
parseResult: ForParseResult
children: TemplateChildNode[]
codegenNode?: ForCodegenNode
+ anchor?: string
}
export interface ForParseResult {
diff --git a/packages/compiler-core/src/codegen.ts b/packages/compiler-core/src/codegen.ts
index 99020bcf1..0b5dcca8f 100644
--- a/packages/compiler-core/src/codegen.ts
+++ b/packages/compiler-core/src/codegen.ts
@@ -167,6 +167,7 @@ function createCodegenContext(
ssr = false,
isTS = false,
inSSR = false,
+ vapor = false,
}: CodegenOptions,
): CodegenContext {
const context: CodegenContext = {
@@ -182,6 +183,7 @@ function createCodegenContext(
ssr,
isTS,
inSSR,
+ vapor,
source: ast.source,
code: ``,
column: 1,
diff --git a/packages/compiler-core/src/options.ts b/packages/compiler-core/src/options.ts
index 998307160..03a32e011 100644
--- a/packages/compiler-core/src/options.ts
+++ b/packages/compiler-core/src/options.ts
@@ -220,6 +220,11 @@ interface SharedTransformCodegenOptions {
* @default 'template.vue.html'
*/
filename?: string
+
+ /**
+ * Indicates vapor component
+ */
+ vapor?: boolean
}
export interface TransformOptions
diff --git a/packages/compiler-core/src/transform.ts b/packages/compiler-core/src/transform.ts
index 10121fb5d..11077df62 100644
--- a/packages/compiler-core/src/transform.ts
+++ b/packages/compiler-core/src/transform.ts
@@ -146,6 +146,7 @@ export function createTransformContext(
slotted = true,
ssr = false,
inSSR = false,
+ vapor = false,
ssrCssVars = ``,
bindingMetadata = EMPTY_OBJ,
inline = false,
@@ -173,6 +174,7 @@ export function createTransformContext(
slotted,
ssr,
inSSR,
+ vapor,
ssrCssVars,
bindingMetadata,
inline,
diff --git a/packages/compiler-sfc/src/compileTemplate.ts b/packages/compiler-sfc/src/compileTemplate.ts
index 29d1853d2..1d832388f 100644
--- a/packages/compiler-sfc/src/compileTemplate.ts
+++ b/packages/compiler-sfc/src/compileTemplate.ts
@@ -253,6 +253,7 @@ function doCompileTemplate({
slotted,
sourceMap: true,
...compilerOptions,
+ vapor,
hmr: !isProd,
nodeTransforms: nodeTransforms.concat(
compilerOptions.nodeTransforms || [],
diff --git a/packages/compiler-ssr/__tests__/ssrComponent.spec.ts b/packages/compiler-ssr/__tests__/ssrComponent.spec.ts
index fb2fff865..2fde4560e 100644
--- a/packages/compiler-ssr/__tests__/ssrComponent.spec.ts
+++ b/packages/compiler-ssr/__tests__/ssrComponent.spec.ts
@@ -39,7 +39,6 @@ describe('ssr: components', () => {
return function ssrRender(_ctx, _push, _parent, _attrs) {
_ssrRenderVNode(_push, _createVNode(_resolveDynamicComponent("foo"), _mergeProps({ prop: "b" }, _attrs), null), _parent)
- _push(\`\`)
}"
`)
@@ -50,7 +49,6 @@ describe('ssr: components', () => {
return function ssrRender(_ctx, _push, _parent, _attrs) {
_ssrRenderVNode(_push, _createVNode(_resolveDynamicComponent(_ctx.foo), _mergeProps({ prop: "b" }, _attrs), null), _parent)
- _push(\`\`)
}"
`)
})
@@ -246,8 +244,7 @@ describe('ssr: components', () => {
_ssrRenderList(list, (i) => {
_push(\`\`)
})
- _push(\`
\`)
- _push(\`\`)
+ _push(\`\`)
} else {
_push(\`\`)
}
@@ -270,8 +267,7 @@ describe('ssr: components', () => {
_ssrRenderList(_ctx.list, (i) => {
_push(\`\`)
})
- _push(\`\`)
- _push(\`\`)
+ _push(\`\`)
} else {
_push(\`\`)
}
@@ -365,7 +361,6 @@ describe('ssr: components', () => {
_push(\`\`)
if (false) {
_push(\`\`)
- _push(\`\`)
} else {
_push(\`\`)
}
diff --git a/packages/compiler-ssr/__tests__/ssrElement.spec.ts b/packages/compiler-ssr/__tests__/ssrElement.spec.ts
index 57e4f022c..f1d509acf 100644
--- a/packages/compiler-ssr/__tests__/ssrElement.spec.ts
+++ b/packages/compiler-ssr/__tests__/ssrElement.spec.ts
@@ -396,50 +396,4 @@ describe('ssr: element', () => {
`)
})
})
-
- describe('dynamic anchor', () => {
- test('two consecutive components', () => {
- expect(
- getCompiledString(`
-
- `),
- ).toMatchInlineSnapshot(`
- "\`\`)
- _push(_ssrRenderComponent(_component_Comp1, null, null, _parent))
- _push(\`\`)
- _push(_ssrRenderComponent(_component_Comp2, null, null, _parent))
- _push(\`
\`"
- `)
- })
-
- test('multiple consecutive components', () => {
- expect(
- getCompiledString(`
-
- `),
- ).toMatchInlineSnapshot(`
- "\`\`)
- _push(_ssrRenderComponent(_component_Comp1, null, null, _parent))
- _push(\`\`)
- _push(_ssrRenderComponent(_component_Comp2, null, null, _parent))
- _push(\`\`)
- _push(_ssrRenderComponent(_component_Comp3, null, null, _parent))
- _push(\`\`)
- _push(_ssrRenderComponent(_component_Comp4, null, null, _parent))
- _push(\`
\`"
- `)
- })
- })
})
diff --git a/packages/compiler-ssr/__tests__/ssrFallthroughAttrs.spec.ts b/packages/compiler-ssr/__tests__/ssrFallthroughAttrs.spec.ts
index 712c09d09..7b3d1962c 100644
--- a/packages/compiler-ssr/__tests__/ssrFallthroughAttrs.spec.ts
+++ b/packages/compiler-ssr/__tests__/ssrFallthroughAttrs.spec.ts
@@ -29,7 +29,6 @@ describe('ssr: attrs fallthrough', () => {
_push(\`\`)
if (true) {
_push(\`\`)
- _push(\`\`)
} else {
_push(\`\`)
}
diff --git a/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts b/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts
index e8e7dfb25..9e70dac0b 100644
--- a/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts
+++ b/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts
@@ -70,14 +70,12 @@ describe('ssr: inject