diff --git a/packages/astro/snowpack-plugin.cjs b/packages/astro/snowpack-plugin.cjs index 3e1edecc7b86..40d0c420a44f 100644 --- a/packages/astro/snowpack-plugin.cjs +++ b/packages/astro/snowpack-plugin.cjs @@ -35,6 +35,7 @@ module.exports = (snowpackConfig, options = {}) => { input: ['.astro', '.md'], output: ['.js', '.css'], }, + exclude: ["**/default.astro"], async transform({contents, id, fileExt}) { if(configManager.isConfigModule(fileExt, id)) { configManager.configModuleId = id; diff --git a/packages/astro/src/compiler/index.ts b/packages/astro/src/compiler/index.ts index ff9c47680187..c7ae4ca488c2 100644 --- a/packages/astro/src/compiler/index.ts +++ b/packages/astro/src/compiler/index.ts @@ -1,5 +1,6 @@ import type { CompileResult, TransformResult } from '../@types/astro'; import type { CompileOptions } from '../@types/compiler.js'; +import findUp from 'find-up'; import path from 'path'; import { MarkdownRenderingOptions, renderMarkdownWithFrontmatter } from '@astrojs/markdown-support'; @@ -59,6 +60,13 @@ export async function convertMdToAstroSource(contents: string, { filename }: { f // Break it up here so that the HTML parser won't detect it. const stringifiedSetupContext = JSON.stringify(contentData).replace(/\<\/script\>/g, ``); + if (!layout) { + const defaultTemplate = await findUp('default.astro', { cwd: filename }); + if(defaultTemplate) { + layout = "./" + path.relative(path.dirname(filename), defaultTemplate) + } + } + return `--- ${layout ? `import {__renderPage as __layout} from '${layout}';` : 'const __layout = undefined;'} export const __content = ${stringifiedSetupContext}; diff --git a/packages/astro/test/fixtures/plain-markdown/src/layouts/content.astro b/packages/astro/test/fixtures/plain-markdown/src/layouts/content.astro index 925a243a9368..7e09ec582602 100644 --- a/packages/astro/test/fixtures/plain-markdown/src/layouts/content.astro +++ b/packages/astro/test/fixtures/plain-markdown/src/layouts/content.astro @@ -3,6 +3,7 @@
+