diff --git a/.changeset/tasty-garlics-call.md b/.changeset/tasty-garlics-call.md new file mode 100644 index 000000000..bee3440cd --- /dev/null +++ b/.changeset/tasty-garlics-call.md @@ -0,0 +1,5 @@ +--- +'@astrojs/compiler': minor +--- + +Do not render implicit tags created during the parsing process diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 838274163..df5d01eae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,9 +2,9 @@ name: Test on: push: - branches: ['main'] + branches: ['main', 'next'] pull_request: - branches: ['main'] + branches: ['main', 'next'] # Automatically cancel in-progress actions on the same branch concurrency: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 294049676..fbed404eb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - next jobs: release: diff --git a/internal/printer/print-to-js.go b/internal/printer/print-to-js.go index c626e9cd2..751195304 100644 --- a/internal/printer/print-to-js.go +++ b/internal/printer/print-to-js.go @@ -573,6 +573,9 @@ func render1(p *printer, n *Node, opts RenderOptions) { if isComponent || isSlot { p.print(")}") } else if !isImplicit { + if n.DataAtom == atom.Head { + p.printRenderHead() + } p.print(`` + n.Data + `>`) } } diff --git a/internal/printer/printer.go b/internal/printer/printer.go index 729ba462e..b408077dc 100644 --- a/internal/printer/printer.go +++ b/internal/printer/printer.go @@ -35,6 +35,7 @@ var ADD_ATTRIBUTE = "$$addAttribute" var SPREAD_ATTRIBUTES = "$$spreadAttributes" var DEFINE_STYLE_VARS = "$$defineStyleVars" var DEFINE_SCRIPT_VARS = "$$defineScriptVars" +var RENDER_HEAD = "$$renderHead" var CREATE_METADATA = "$$createMetadata" var METADATA = "$$metadata" var RESULT = "$$result" @@ -57,6 +58,7 @@ func (p *printer) printInternalImports(importSpecifier string) { p.print("import {\n ") p.print(FRAGMENT + ",\n ") p.print("render as " + TEMPLATE_TAG + ",\n ") + p.print("renderHead as " + RENDER_HEAD + ",\n ") p.print("createAstro as " + CREATE_ASTRO + ",\n ") p.print("createComponent as " + CREATE_COMPONENT + ",\n ") p.print("renderComponent as " + RENDER_COMPONENT + ",\n ") @@ -86,6 +88,11 @@ func (p *printer) printCSSImports(cssLen int) { p.hasCSSImports = true } +func (p *printer) printRenderHead() { + p.addNilSourceMapping() + p.print(fmt.Sprintf("${%s(%s)}", RENDER_HEAD, RESULT)) +} + func (p *printer) printReturnOpen() { p.addNilSourceMapping() p.print("return ") diff --git a/internal/printer/printer_test.go b/internal/printer/printer_test.go index 2e4630e46..4718ab98a 100644 --- a/internal/printer/printer_test.go +++ b/internal/printer/printer_test.go @@ -16,6 +16,7 @@ import ( var INTERNAL_IMPORTS = fmt.Sprintf("import {\n %s\n} from \"%s\";\n", strings.Join([]string{ FRAGMENT, "render as " + TEMPLATE_TAG, + "renderHead as " + RENDER_HEAD, "createAstro as " + CREATE_ASTRO, "createComponent as " + CREATE_COMPONENT, "renderComponent as " + RENDER_COMPONENT, @@ -38,6 +39,7 @@ var STYLE_SUFFIX = "];\nfor (const STYLE of STYLES) $$result.styles.add(STYLE);\ var SCRIPT_PRELUDE = "const SCRIPTS = [\n" var SCRIPT_SUFFIX = "];\nfor (const SCRIPT of SCRIPTS) $$result.scripts.add(SCRIPT);\n" var CREATE_ASTRO_CALL = "const $$Astro = $$createAstro(import.meta.url, 'https://astro.build', '.');\nconst Astro = $$Astro;" +var RENDER_HEAD_RESULT = fmt.Sprintf("${%s(%s)}", RENDER_HEAD, RESULT) // SPECIAL TEST FIXTURES var NON_WHITESPACE_CHARS = []byte("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_=+[];:'\",.?") @@ -177,7 +179,7 @@ import VueComponent from '../components/Vue.vue'; code: `