From 8ae2c9c5af848cece7f0e5d44efd53dbb5b935e3 Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Tue, 10 Jan 2023 18:47:45 -0500 Subject: [PATCH 1/7] refactor: remove experimental.cc from core --- packages/astro/src/@types/astro.ts | 24 +---------------- packages/astro/src/core/build/generate.ts | 1 - packages/astro/src/core/build/static-build.ts | 3 +-- .../astro/src/core/build/vite-plugin-css.ts | 27 +++++++------------ .../astro/src/core/build/vite-plugin-ssr.ts | 1 - packages/astro/src/core/config/config.ts | 5 ---- packages/astro/src/core/config/schema.ts | 13 +-------- packages/astro/src/core/create-vite.ts | 10 +++---- .../astro/src/core/render/dev/environment.ts | 1 - .../astro/src/vite-plugin-markdown/index.ts | 1 - packages/integrations/mdx/src/plugins.ts | 5 ++-- packages/markdown/remark/src/index.ts | 5 +--- packages/markdown/remark/src/types.ts | 2 -- 13 files changed, 18 insertions(+), 80 deletions(-) diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index 2f62409d3b6b..75e75f6a3a66 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -83,7 +83,6 @@ export interface CLIFlags { port?: number; config?: string; drafts?: boolean; - experimentalContentCollections?: boolean; } export interface BuildConfig { @@ -911,34 +910,13 @@ export interface AstroUserConfig { legacy?: object; /** - * @docs * @kind heading * @name Experimental Flags * @description * Astro offers experimental flags to give users early access to new features. * These flags are not guaranteed to be stable. */ - experimental?: { - /** - * @docs - * @name experimental.contentCollections - * @type {boolean} - * @default `false` - * @version 1.7.0 - * @description - * Enable experimental support for [Content Collections](https://docs.astro.build/en/guides/content-collections/). This makes the `src/content/` directory a reserved directory for Astro to manage, and introduces the `astro:content` module for querying this content. - * - * To enable this feature, set `experimental.contentCollections` to `true` in your Astro config: - * - * ```js - * { - * experimental: { - * contentCollections: true, - * }, - * } - */ - contentCollections?: boolean; - }; + experimental?: object; // Legacy options to be removed diff --git a/packages/astro/src/core/build/generate.ts b/packages/astro/src/core/build/generate.ts index 047831860a05..1a708aab3765 100644 --- a/packages/astro/src/core/build/generate.ts +++ b/packages/astro/src/core/build/generate.ts @@ -349,7 +349,6 @@ async function generatePath( logging, markdown: { ...settings.config.markdown, - isExperimentalContentCollections: settings.config.experimental.contentCollections, contentDir: getContentPaths(settings.config).contentDir, }, mode: opts.mode, diff --git a/packages/astro/src/core/build/static-build.ts b/packages/astro/src/core/build/static-build.ts index 13f40c8da358..c87e624ec9af 100644 --- a/packages/astro/src/core/build/static-build.ts +++ b/packages/astro/src/core/build/static-build.ts @@ -157,8 +157,7 @@ async function ssrBuild(opts: StaticBuildOptions, internals: BuildInternals, inp }), vitePluginPrerender(opts, internals), ...(viteConfig.plugins || []), - settings.config.experimental.contentCollections && - astroBundleDelayedAssetPlugin({ internals }), + astroBundleDelayedAssetPlugin({ internals }), // SSR needs to be last ssr && vitePluginSSR(internals, settings.adapter!), ], diff --git a/packages/astro/src/core/build/vite-plugin-css.ts b/packages/astro/src/core/build/vite-plugin-css.ts index 68012948aadf..9398cf60a145 100644 --- a/packages/astro/src/core/build/vite-plugin-css.ts +++ b/packages/astro/src/core/build/vite-plugin-css.ts @@ -76,15 +76,13 @@ export function rollupPluginAstroBuildCSS(options: PluginOptions): VitePlugin[] // For CSS, create a hash of all of the pages that use it. // This causes CSS to be built into shared chunks when used by multiple pages. if (isCSSRequest(id)) { - if (settings.config.experimental.contentCollections) { - for (const [pageInfo] of walkParentInfos(id, { - getModuleInfo: args[0].getModuleInfo, - })) { - if (new URL(pageInfo.id, 'file://').searchParams.has(DELAYED_ASSET_FLAG)) { - // Split delayed assets to separate modules - // so they can be injected where needed - return createNameHash(id, [id]); - } + for (const [pageInfo] of walkParentInfos(id, { + getModuleInfo: args[0].getModuleInfo, + })) { + if (new URL(pageInfo.id, 'file://').searchParams.has(DELAYED_ASSET_FLAG)) { + // Split delayed assets to separate modules + // so they can be injected where needed + return createNameHash(id, [id]); } } return createNameForParentPages(id, args[0]); @@ -174,17 +172,10 @@ export function rollupPluginAstroBuildCSS(options: PluginOptions): VitePlugin[] id, this, function until(importer) { - if (settings.config.experimental.contentCollections) { - // Short circuit when `contentCollections` is enabled. - return new URL(importer, 'file://').searchParams.has(DELAYED_ASSET_FLAG); - } - return false; + return new URL(importer, 'file://').searchParams.has(DELAYED_ASSET_FLAG); } )) { - if ( - settings.config.experimental.contentCollections && - new URL(pageInfo.id, 'file://').searchParams.has(DELAYED_ASSET_FLAG) - ) { + if (new URL(pageInfo.id, 'file://').searchParams.has(DELAYED_ASSET_FLAG)) { for (const parent of walkParentInfos(id, this)) { const parentInfo = parent[0]; if (moduleIsTopLevelPage(parentInfo)) { diff --git a/packages/astro/src/core/build/vite-plugin-ssr.ts b/packages/astro/src/core/build/vite-plugin-ssr.ts index d9df28af227e..817881c363c6 100644 --- a/packages/astro/src/core/build/vite-plugin-ssr.ts +++ b/packages/astro/src/core/build/vite-plugin-ssr.ts @@ -210,7 +210,6 @@ function buildManifest( base: settings.config.base, markdown: { ...settings.config.markdown, - isExperimentalContentCollections: settings.config.experimental.contentCollections, contentDir: getContentPaths(settings.config).contentDir, }, pageMap: null as any, diff --git a/packages/astro/src/core/config/config.ts b/packages/astro/src/core/config/config.ts index 5be492b404c3..394a968db16b 100644 --- a/packages/astro/src/core/config/config.ts +++ b/packages/astro/src/core/config/config.ts @@ -100,10 +100,6 @@ export function resolveFlags(flags: Partial): CLIFlags { host: typeof flags.host === 'string' || typeof flags.host === 'boolean' ? flags.host : undefined, drafts: typeof flags.drafts === 'boolean' ? flags.drafts : undefined, - experimentalContentCollections: - typeof flags.experimentalContentCollections === 'boolean' - ? flags.experimentalContentCollections - : undefined, }; } @@ -132,7 +128,6 @@ function mergeCLIFlags(astroConfig: AstroUserConfig, flags: CLIFlags) { // TODO: Come back here and refactor to remove this expected error. astroConfig.server.host = flags.host; } - if (flags.experimentalContentCollections) astroConfig.experimental.contentCollections = true; return astroConfig; } diff --git a/packages/astro/src/core/config/schema.ts b/packages/astro/src/core/config/schema.ts index bdf7d4e5de54..eff69ca4ad84 100644 --- a/packages/astro/src/core/config/schema.ts +++ b/packages/astro/src/core/config/schema.ts @@ -34,9 +34,6 @@ const ASTRO_CONFIG_DEFAULTS: AstroUserConfig & any = { }, vite: {}, legacy: {}, - experimental: { - contentCollections: false, - }, }; export const AstroConfigSchema = z.object({ @@ -167,15 +164,7 @@ export const AstroConfigSchema = z.object({ vite: z .custom((data) => data instanceof Object && !Array.isArray(data)) .default(ASTRO_CONFIG_DEFAULTS.vite), - experimental: z - .object({ - contentCollections: z - .boolean() - .optional() - .default(ASTRO_CONFIG_DEFAULTS.experimental.contentCollections), - }) - .optional() - .default({}), + experimental: z.object({}).optional().default({}), legacy: z.object({}).optional().default({}), }); diff --git a/packages/astro/src/core/create-vite.ts b/packages/astro/src/core/create-vite.ts index 05d591f423a3..1d33ba28fddd 100644 --- a/packages/astro/src/core/create-vite.ts +++ b/packages/astro/src/core/create-vite.ts @@ -104,13 +104,9 @@ export async function createVite( astroHeadPropagationPlugin({ settings }), astroScannerPlugin({ settings, logging }), astroInjectEnvTsPlugin({ settings, logging, fs }), - ...(settings.config.experimental.contentCollections - ? [ - astroContentVirtualModPlugin({ settings }), - astroContentServerPlugin({ fs, settings, logging, mode }), - astroDelayedAssetPlugin({ mode }), - ] - : []), + astroContentVirtualModPlugin({ settings }), + astroContentServerPlugin({ fs, settings, logging, mode }), + astroDelayedAssetPlugin({ mode }), ], publicDir: fileURLToPath(settings.config.publicDir), root: fileURLToPath(settings.config.root), diff --git a/packages/astro/src/core/render/dev/environment.ts b/packages/astro/src/core/render/dev/environment.ts index c12495bf5c0a..1704c6f291d0 100644 --- a/packages/astro/src/core/render/dev/environment.ts +++ b/packages/astro/src/core/render/dev/environment.ts @@ -24,7 +24,6 @@ export function createDevelopmentEnvironment( logging, markdown: { ...settings.config.markdown, - isExperimentalContentCollections: settings.config.experimental.contentCollections, contentDir: getContentPaths(settings.config).contentDir, }, mode, diff --git a/packages/astro/src/vite-plugin-markdown/index.ts b/packages/astro/src/vite-plugin-markdown/index.ts index 34ed3647b1ff..6891bc0d5870 100644 --- a/packages/astro/src/vite-plugin-markdown/index.ts +++ b/packages/astro/src/vite-plugin-markdown/index.ts @@ -71,7 +71,6 @@ export default function markdown({ settings, logging }: AstroPluginOptions): Plu const renderResult = await renderMarkdown(raw.content, { ...settings.config.markdown, fileURL: new URL(`file://${fileId}`), - isExperimentalContentCollections: settings.config.experimental.contentCollections, contentDir: getContentPaths(settings.config).contentDir, frontmatter: raw.data, }); diff --git a/packages/integrations/mdx/src/plugins.ts b/packages/integrations/mdx/src/plugins.ts index 6637b57d7bf9..6b97bc77cce0 100644 --- a/packages/integrations/mdx/src/plugins.ts +++ b/packages/integrations/mdx/src/plugins.ts @@ -161,9 +161,8 @@ export async function getRemarkPlugins( remarkPlugins = [...remarkPlugins, ...ignoreStringPlugins(mdxOptions.remarkPlugins)]; // Apply last in case user plugins resolve relative image paths - if (config.experimental.contentCollections) { - remarkPlugins.push(toRemarkContentRelImageError(config)); - } + remarkPlugins.push(toRemarkContentRelImageError(config)); + return remarkPlugins; } diff --git a/packages/markdown/remark/src/index.ts b/packages/markdown/remark/src/index.ts index 91680f3fd848..fdd669280b5f 100644 --- a/packages/markdown/remark/src/index.ts +++ b/packages/markdown/remark/src/index.ts @@ -53,7 +53,6 @@ export async function renderMarkdown( remarkRehype = markdownConfigDefaults.remarkRehype, gfm = markdownConfigDefaults.gfm, smartypants = markdownConfigDefaults.smartypants, - isExperimentalContentCollections = false, contentDir, frontmatter: userFrontmatter = {}, } = opts; @@ -91,9 +90,7 @@ export async function renderMarkdown( } // Apply later in case user plugins resolve relative image paths - if (isExperimentalContentCollections) { - parser.use([toRemarkContentRelImageError({ contentDir })]); - } + parser.use([toRemarkContentRelImageError({ contentDir })]); parser.use([ [ diff --git a/packages/markdown/remark/src/types.ts b/packages/markdown/remark/src/types.ts index 40b2ac841947..ff3060704f80 100644 --- a/packages/markdown/remark/src/types.ts +++ b/packages/markdown/remark/src/types.ts @@ -59,8 +59,6 @@ export interface MarkdownRenderingOptions extends AstroMarkdownOptions { scopedClassName: string | null; }; /** Used to prevent relative image imports from `src/content/` */ - isExperimentalContentCollections?: boolean; - /** Used to prevent relative image imports from `src/content/` */ contentDir: URL; /** Used for frontmatter injection plugins */ frontmatter?: Record; From 19589fe07aed73dd456e4756fb8d8b65dd0054fc Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Tue, 10 Jan 2023 18:48:28 -0500 Subject: [PATCH 2/7] chore: remove experimental flag from tests --- examples/with-content/astro.config.mjs | 3 --- .../astro/test/fixtures/content-collections/astro.config.mjs | 3 --- .../test/fixtures/content-ssr-integration/astro.config.mjs | 3 --- .../content-static-paths-integration/astro.config.mjs | 3 --- packages/astro/test/fixtures/content/astro.config.mjs | 1 - packages/astro/test/units/dev/collections-renderentry.test.js | 4 ---- 6 files changed, 17 deletions(-) diff --git a/examples/with-content/astro.config.mjs b/examples/with-content/astro.config.mjs index e27ea0285aac..3b2f75c840d3 100644 --- a/examples/with-content/astro.config.mjs +++ b/examples/with-content/astro.config.mjs @@ -7,7 +7,4 @@ import sitemap from '@astrojs/sitemap'; export default defineConfig({ site: 'https://example.com', integrations: [mdx(), sitemap()], - experimental: { - contentCollections: true, - }, }); diff --git a/packages/astro/test/fixtures/content-collections/astro.config.mjs b/packages/astro/test/fixtures/content-collections/astro.config.mjs index 6f20dd8055dc..3f7b88523be6 100644 --- a/packages/astro/test/fixtures/content-collections/astro.config.mjs +++ b/packages/astro/test/fixtures/content-collections/astro.config.mjs @@ -4,7 +4,4 @@ import mdx from '@astrojs/mdx'; // https://astro.build/config export default defineConfig({ integrations: [mdx()], - experimental: { - contentCollections: true, - }, }); diff --git a/packages/astro/test/fixtures/content-ssr-integration/astro.config.mjs b/packages/astro/test/fixtures/content-ssr-integration/astro.config.mjs index 6f20dd8055dc..3f7b88523be6 100644 --- a/packages/astro/test/fixtures/content-ssr-integration/astro.config.mjs +++ b/packages/astro/test/fixtures/content-ssr-integration/astro.config.mjs @@ -4,7 +4,4 @@ import mdx from '@astrojs/mdx'; // https://astro.build/config export default defineConfig({ integrations: [mdx()], - experimental: { - contentCollections: true, - }, }); diff --git a/packages/astro/test/fixtures/content-static-paths-integration/astro.config.mjs b/packages/astro/test/fixtures/content-static-paths-integration/astro.config.mjs index 6f20dd8055dc..3f7b88523be6 100644 --- a/packages/astro/test/fixtures/content-static-paths-integration/astro.config.mjs +++ b/packages/astro/test/fixtures/content-static-paths-integration/astro.config.mjs @@ -4,7 +4,4 @@ import mdx from '@astrojs/mdx'; // https://astro.build/config export default defineConfig({ integrations: [mdx()], - experimental: { - contentCollections: true, - }, }); diff --git a/packages/astro/test/fixtures/content/astro.config.mjs b/packages/astro/test/fixtures/content/astro.config.mjs index b331e201ac29..f6e8051175f1 100644 --- a/packages/astro/test/fixtures/content/astro.config.mjs +++ b/packages/astro/test/fixtures/content/astro.config.mjs @@ -3,5 +3,4 @@ import mdx from '@astrojs/mdx'; export default defineConfig({ integrations: [mdx()], - experimental: { contentCollections: true }, }); diff --git a/packages/astro/test/units/dev/collections-renderentry.test.js b/packages/astro/test/units/dev/collections-renderentry.test.js index 072d004fa57f..fa720f97b84c 100644 --- a/packages/astro/test/units/dev/collections-renderentry.test.js +++ b/packages/astro/test/units/dev/collections-renderentry.test.js @@ -47,7 +47,6 @@ describe('Content Collections - render()', () => { userConfig: { integrations: [mdx()], vite: { server: { middlewareMode: true } }, - experimental: { contentCollections: true }, }, }, async (container) => { @@ -121,7 +120,6 @@ describe('Content Collections - render()', () => { userConfig: { integrations: [mdx()], vite: { server: { middlewareMode: true } }, - experimental: { contentCollections: true }, }, }, async (container) => { @@ -193,7 +191,6 @@ describe('Content Collections - render()', () => { userConfig: { integrations: [mdx()], vite: { server: { middlewareMode: true } }, - experimental: { contentCollections: true }, }, }, async (container) => { @@ -259,7 +256,6 @@ describe('Content Collections - render()', () => { userConfig: { integrations: [mdx()], vite: { server: { middlewareMode: true } }, - experimental: { contentCollections: true }, }, }, async (container) => { From a148d1e3fbc01c1d1ebd0ff5602e70a391cb6b4d Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Wed, 11 Jan 2023 11:30:49 -0500 Subject: [PATCH 3/7] fix: mock contentDir in remark tests --- packages/markdown/remark/test/autolinking.test.js | 13 ++++++++++--- packages/markdown/remark/test/entities.test.js | 6 +++++- packages/markdown/remark/test/plugins.test.js | 2 ++ packages/markdown/remark/test/test-utils.js | 3 +++ 4 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 packages/markdown/remark/test/test-utils.js diff --git a/packages/markdown/remark/test/autolinking.test.js b/packages/markdown/remark/test/autolinking.test.js index 48bf894be01b..b1e567bb4350 100644 --- a/packages/markdown/remark/test/autolinking.test.js +++ b/packages/markdown/remark/test/autolinking.test.js @@ -1,10 +1,14 @@ import { renderMarkdown } from '../dist/index.js'; import chai from 'chai'; +import { mockRenderMarkdownParams } from './test-utils.js'; describe('autolinking', () => { describe('plain md', () => { it('autolinks URLs starting with a protocol in plain text', async () => { - const { code } = await renderMarkdown(`See https://example.com for more.`, {}); + const { code } = await renderMarkdown( + `See https://example.com for more.`, + mockRenderMarkdownParams + ); chai .expect(code.replace(/\n/g, '')) @@ -12,7 +16,10 @@ describe('autolinking', () => { }); it('autolinks URLs starting with "www." in plain text', async () => { - const { code } = await renderMarkdown(`See www.example.com for more.`, {}); + const { code } = await renderMarkdown( + `See www.example.com for more.`, + mockRenderMarkdownParams + ); chai .expect(code.trim()) @@ -22,7 +29,7 @@ describe('autolinking', () => { it('does not autolink URLs in code blocks', async () => { const { code } = await renderMarkdown( 'See `https://example.com` or `www.example.com` for more.', - {} + mockRenderMarkdownParams ); chai diff --git a/packages/markdown/remark/test/entities.test.js b/packages/markdown/remark/test/entities.test.js index d35ed3a89536..acaf71be172c 100644 --- a/packages/markdown/remark/test/entities.test.js +++ b/packages/markdown/remark/test/entities.test.js @@ -1,9 +1,13 @@ import { renderMarkdown } from '../dist/index.js'; import { expect } from 'chai'; +import { mockRenderMarkdownParams } from './test-utils.js'; describe('entities', () => { it('should not unescape entities in regular Markdown', async () => { - const { code } = await renderMarkdown(`<i>This should NOT be italic</i>`, {}); + const { code } = await renderMarkdown( + `<i>This should NOT be italic</i>`, + mockRenderMarkdownParams + ); expect(code).to.equal(`

<i>This should NOT be italic</i>

`); }); diff --git a/packages/markdown/remark/test/plugins.test.js b/packages/markdown/remark/test/plugins.test.js index a1abeb2ed242..35e5dcaf8d74 100644 --- a/packages/markdown/remark/test/plugins.test.js +++ b/packages/markdown/remark/test/plugins.test.js @@ -1,4 +1,5 @@ import { renderMarkdown } from '../dist/index.js'; +import { mockRenderMarkdownParams } from './test-utils.js'; import chai from 'chai'; import { fileURLToPath } from 'node:url'; @@ -8,6 +9,7 @@ describe('plugins', () => { it('should be able to get file path when passing fileURL', async () => { let context; await renderMarkdown(`test`, { + ...mockRenderMarkdownParams, fileURL: new URL('virtual.md', import.meta.url), remarkPlugins: [ function () { diff --git a/packages/markdown/remark/test/test-utils.js b/packages/markdown/remark/test/test-utils.js new file mode 100644 index 000000000000..10b779a7de79 --- /dev/null +++ b/packages/markdown/remark/test/test-utils.js @@ -0,0 +1,3 @@ +export const mockRenderMarkdownParams = { + contentDir: new URL('file:///src/content/'), +}; From ef78089387523f2d246508c9938742205088b462 Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Wed, 11 Jan 2023 11:31:00 -0500 Subject: [PATCH 4/7] fix: check vfile.path in rel-image-error plugin --- packages/markdown/remark/src/remark-content-rel-image-error.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/markdown/remark/src/remark-content-rel-image-error.ts b/packages/markdown/remark/src/remark-content-rel-image-error.ts index 1a0870c22506..3e3664b20438 100644 --- a/packages/markdown/remark/src/remark-content-rel-image-error.ts +++ b/packages/markdown/remark/src/remark-content-rel-image-error.ts @@ -10,6 +10,8 @@ import type { VFile } from 'vfile'; export default function toRemarkContentRelImageError({ contentDir }: { contentDir: URL }) { return function remarkContentRelImageError() { return (tree: any, vfile: VFile) => { + if (typeof vfile?.path !== 'string') return; + const isContentFile = pathToFileURL(vfile.path).href.startsWith(contentDir.href); if (!isContentFile) return; From 711c9183b83f6491bd68ce526f2f2904050cb4ab Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Wed, 11 Jan 2023 11:33:09 -0500 Subject: [PATCH 5/7] fix: move .astro/ excludes to all test/fixtures --- .gitignore | 4 ++++ packages/astro/test/fixtures/.gitignore | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) delete mode 100644 packages/astro/test/fixtures/.gitignore diff --git a/.gitignore b/.gitignore index 0f5c68284773..457ae2131e9d 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,7 @@ packages/integrations/**/.netlify/ # exclude IntelliJ/WebStorm stuff .idea + +# ignore content collection generated files +packages/**/test/fixtures/**/.astro/ +packages/**/test/fixtures/**/env.d.ts diff --git a/packages/astro/test/fixtures/.gitignore b/packages/astro/test/fixtures/.gitignore deleted file mode 100644 index 7f0fa55b0a86..000000000000 --- a/packages/astro/test/fixtures/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.astro/ -env.d.ts From 5c67e65b0a3a0fd36b5452e8589833ecd79fe3b4 Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Wed, 11 Jan 2023 11:36:00 -0500 Subject: [PATCH 6/7] fix: include test/**/fixtures in ignore --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 457ae2131e9d..df661ac83e9a 100644 --- a/.gitignore +++ b/.gitignore @@ -26,5 +26,5 @@ packages/integrations/**/.netlify/ .idea # ignore content collection generated files -packages/**/test/fixtures/**/.astro/ -packages/**/test/fixtures/**/env.d.ts +packages/**/test/**/fixtures/**/.astro/ +packages/**/test/**/fixtures/**/env.d.ts From b470255ce8cdd4ee4c0b7601816142ab9565e092 Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Wed, 11 Jan 2023 11:51:58 -0500 Subject: [PATCH 7/7] chore: changeset --- .changeset/thin-beers-drive.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .changeset/thin-beers-drive.md diff --git a/.changeset/thin-beers-drive.md b/.changeset/thin-beers-drive.md new file mode 100644 index 000000000000..d006e95fa0f6 --- /dev/null +++ b/.changeset/thin-beers-drive.md @@ -0,0 +1,14 @@ +--- +'astro': major +'@astrojs/mdx': major +'@astrojs/markdown-remark': major +--- + +Baseline the experimental `contentCollections` flag. You're free to remove this from your astro config! + +```diff +import { defineConfig } from 'astro/config'; + +export default defineConfig({ +- experimental: { contentCollections: true } +})