diff options
Diffstat (limited to '.changeset/beige-pumpkins-pump.md')
-rw-r--r-- | .changeset/beige-pumpkins-pump.md | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/.changeset/beige-pumpkins-pump.md b/.changeset/beige-pumpkins-pump.md deleted file mode 100644 index 54b33a619..000000000 --- a/.changeset/beige-pumpkins-pump.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -'astro': major -'@astrojs/markdown-remark': major -'@astrojs/mdx': minor ---- - -Give remark and rehype plugins access to user frontmatter via frontmatter injection. This means `data.astro.frontmatter` is now the _complete_ Markdown or MDX document's frontmatter, rather than an empty object. - -This allows plugin authors to modify existing frontmatter, or compute new properties based on other properties. For example, say you want to compute a full image URL based on an `imageSrc` slug in your document frontmatter: - -```ts -export function remarkInjectSocialImagePlugin() { - return function (tree, file) { - const { frontmatter } = file.data.astro; - frontmatter.socialImageSrc = new URL( - frontmatter.imageSrc, - 'https://my-blog.com/', - ).pathname; - } -} -``` - -#### Content Collections - new `remarkPluginFrontmatter` property - -We have changed _inject_ frontmatter to _modify_ frontmatter in our docs to improve discoverability. This is based on support forum feedback, where "injection" is rarely the term used. - -To reflect this, the `injectedFrontmatter` property has been renamed to `remarkPluginFrontmatter`. This should clarify this plugin is still separate from the `data` export Content Collections expose today. - - -#### Migration instructions - -Plugin authors should now **check for user frontmatter when applying defaults.** - -For example, say a remark plugin wants to apply a default `title` if none is present. Add a conditional to check if the property is present, and update if none exists: - -```diff -export function remarkInjectTitlePlugin() { - return function (tree, file) { - const { frontmatter } = file.data.astro; -+ if (!frontmatter.title) { - frontmatter.title = 'Default title'; -+ } - } -} -``` - -This differs from previous behavior, where a Markdown file's frontmatter would _always_ override frontmatter injected via remark or reype. |