-
#12646
f13417b
Thanks @bluwy! - Avoids parsing frontmatter that are not at the top of a file -
#12570
87231b1
Thanks @GrimLink! - Removes trailing new line in code blocks to prevent generating a trailing empty<span />
tag -
#12664
a71e9b9
Thanks @bluwy! - Fixes frontmatter parsing if file is encoded in UTF8 with BOM
-
#11861
3ab3b4e
Thanks @bluwy! - Cleans up Astro-specfic metadata attached tovfile.data
in Remark and Rehype plugins. Previously, the metadata was attached in different locations with inconsistent names. The metadata is now renamed as below:vfile.data.__astroHeadings
->vfile.data.astro.headings
vfile.data.imagePaths
->vfile.data.astro.imagePaths
The types of
imagePaths
has also been updated fromSet<string>
tostring[]
. Thevfile.data.astro.frontmatter
metadata is left unchanged.While we don't consider these APIs public, they can be accessed by Remark and Rehype plugins that want to re-use Astro's metadata. If you are using these APIs, make sure to access them in the new locations.
-
#12008
5608338
Thanks @Princesseuh! - Welcome to the Astro 5 beta! This release has no changes from the latest alpha of this package, but it does bring us one step closer to the final, stable release.Starting from this release, no breaking changes will be introduced unless absolutely necessary.
To learn how to upgrade, check out the Astro v5.0 upgrade guide in our beta docs site.
-
#11825
560ef15
Thanks @bluwy! - Updates return object ofcreateShikiHighlighter
ascodeToHast
andcodeToHtml
to allow generating either the hast or html string directly -
#11661
83a2a64
Thanks @bluwy! - Renames the following CSS variables theme color token names to better align with the Shiki v1 defaults:--astro-code-color-text
=>--astro-code-foreground
--astro-code-color-background
=>--astro-code-background
You can perform a global find and replace in your project to migrate to the new token names.
-
#11861
3ab3b4e
Thanks @bluwy! - RemovesInvalidAstroDataError
,safelyGetAstroData
, andsetVfileFrontmatter
APIs in favour ofisFrontmatterValid
-
#12075
a19530e
Thanks @bluwy! - Parses frontmatter ourselves -
Updated dependencies [
827093e
]:- @astrojs/[email protected]
- Updated dependencies [
827093e
]:- @astrojs/[email protected]
-
#12008
5608338
Thanks @Princesseuh! - Welcome to the Astro 5 beta! This release has no changes from the latest alpha of this package, but it does bring us one step closer to the final, stable release.Starting from this release, no breaking changes will be introduced unless absolutely necessary.
To learn how to upgrade, check out the Astro v5.0 upgrade guide in our beta docs site.
-
#11861
3ab3b4e
Thanks @bluwy! - Cleans up Astro-specfic metadata attached tovfile.data
in Remark and Rehype plugins. Previously, the metadata was attached in different locations with inconsistent names. The metadata is now renamed as below:vfile.data.__astroHeadings
->vfile.data.astro.headings
vfile.data.imagePaths
->vfile.data.astro.imagePaths
The types of
imagePaths
has also been updated fromSet<string>
tostring[]
. Thevfile.data.astro.frontmatter
metadata is left unchanged.While we don't consider these APIs public, they can be accessed by Remark and Rehype plugins that want to re-use Astro's metadata. If you are using these APIs, make sure to access them in the new locations.
-
#11825
560ef15
Thanks @bluwy! - Updates return object ofcreateShikiHighlighter
ascodeToHast
andcodeToHtml
to allow generating either the hast or html string directly -
#11861
3ab3b4e
Thanks @bluwy! - RemovesInvalidAstroDataError
,safelyGetAstroData
, andsetVfileFrontmatter
APIs in favour ofisFrontmatterValid
-
#11661
83a2a64
Thanks @bluwy! - Renames the following CSS variables theme color token names to better align with the Shiki v1 defaults:--astro-code-color-text
=>--astro-code-foreground
--astro-code-color-background
=>--astro-code-background
You can perform a global find and replace in your project to migrate to the new token names.
-
#12039
710a1a1
Thanks @ematipico! - Adds amarkdown.shikiConfig.langAlias
option that allows aliasing a non-supported code language to a known language. This is useful when the language of your code samples is not a built-in Shiki language, but you want your Markdown source to contain an accurate language while also displaying syntax highlighting.The following example configures Shiki to highlight
cjs
code blocks using thejavascript
syntax highlighter:import { defineConfig } from 'astro/config'; export default defineConfig({ markdown: { shikiConfig: { langAlias: { cjs: 'javascript', }, }, }, });
Then in your Markdown, you can use the alias as the language for a code block for syntax highlighting:
```cjs 'use strict'; function commonJs() { return 'I am a commonjs file'; } ```
-
#11341
49b5145
Thanks @madcampos! - Adds support for Shiki'sdefaultColor
option.This option allows you to override the values of a theme's inline style, adding only CSS variables to give you more flexibility in applying multiple color themes.
Configure
defaultColor: false
in your Shiki config to apply throughout your site, or pass to Astro's built-in<Code>
component to style an individual code block.import { defineConfig } from 'astro/config'; export default defineConfig({ markdown: { shikiConfig: { themes: { light: 'github-light', dark: 'github-dark', }, defaultColor: false, }, }, });
--- import { Code } from 'astro:components'; --- <Code code={`const useMyColors = true`} lang="js" defaultColor={false} />
- #11310
b6afe6a
Thanks @bluwy! - Handles encoded image paths in internal rehype plugins and return decoded paths from markdown vfile'sdata.imagePaths
-
#10538
ccafa8d230f65c9302421a0ce0a0adc5824bfd55
Thanks @604qgc! - Adds adata-language
attribute on the renderedpre
elements to expose the highlighted syntax language.For example, the following Markdown code block will expose
data-language="python"
:\```python def func(): print('Hello Astro!') \```
This allows retrieving the language in a rehype plugin from
node.properties.dataLanguage
by accessing the<pre>
element using{ tagName: "pre" }
:// myRehypePre.js import { visit } from "unist-util-visit"; export default function myRehypePre() { return (tree) => { visit(tree, { tagName: "pre" }, (node) => { const lang = node.properties.dataLanguage; [...] }); }; }
Note: The
<pre>
element is not exposed when using Astro's<Code />
component which outputs flattened HTML.The
data-language
attribute may also be used in css rules:pre::before { content: attr(data-language); } pre[data-language='javascript'] { font-size: 2rem; }
- Updated dependencies [
683d51a5eecafbbfbfed3910a3f1fbf0b3531b99
]:- @astrojs/[email protected]
-
#10629
2cf116f80cb5e421ab5cc5eb4a654e7b78c1b8de
Thanks @bluwy! - Removes deprecated APIs includingremarkShiki
,remarkPrism
,replaceCssVariables
and several unused types -
#10618
374efcdff9625ca43309d89e3b9cfc9174351512
Thanks @43081j! - Updates Shiki syntax highlighting to lazily load shiki languages by default (only preloadingplaintext
). Additionally, thecreateShikiHighlighter()
API now returns an asynchronoushighlight()
function due to this.
- #10540
c585528f446ccca3d4c643f4af5d550b93c18902
Thanks @imkunet! - This patch allows Shiki to use all of its reserved languages instead of the previous behavior of forcing unknown languages to plaintext.
- #10494
19e42c368184013fc30d1e46753b9e9383bb2bdf
Thanks @bluwy! - Fixes support for Shiki transformers that access themeta
to conditionally perform transformations
-
#9960
c081adf998d30419fed97d8fccc11340cdc512e0
Thanks @StandardGage! - Allows passing any props to the<Code />
component -
#10130
5a9528741fa98d017b269c7e4f013058028bdc5d
Thanks @bluwy! - Migratesshikiji
toshiki
1.0 -
#10104
a31bbd7ff8f3ec62ee507f72d1d25140b82ffc18
Thanks @remcohaszing! - Changes Astro's internal syntax highlighting to use rehype plugins instead of remark plugins. This provides better interoperability with other rehype plugins that deal with code blocks, in particular with third party syntax highlighting plugins andrehype-mermaid
.This may be a breaking change if you are currently using:
- a remark plugin that relies on nodes of type
html
- a rehype plugin that depends on nodes of type
raw
.
Please review your rendered code samples carefully, and if necessary, consider using a rehype plugin that deals with the generated
element
nodes instead. You can transform the AST of raw HTML strings, or alternatively usehast-util-to-html
to get a string from araw
node. - a remark plugin that relies on nodes of type
- #9866
44c957f893c6bf5f5b7c78301de7b21c5975584d
Thanks @ktym4a! - Fixes a bug where non-UTF-8 file names are not displayed when using relative paths in markdowns.
- #9738
a505190933365268d48139a5f197a3cfb5570870
Thanks @bluwy! - Fixes usage in browser environments by using subpath imports
-
#9736
53c69dcc82cdf4000aff13a6c11fffe19096cf45
Thanks @bluwy! - Initializes internalcwdUrlStr
variable lazily for performance, and workaround Rollup side-effect detection bug when building for non-Node runtimes -
#9723
2f81cffa9da9db0e2802d303f94feaee8d2f54ec
Thanks @blackmann! - Fixes a case where transformers wouldn't work on theclass
property
-
#9566
165cfc154be477337037185c32b308616d1ed6fa
Thanks @OliverSpeir! - Allows remark plugins to pass options specifying how images in.md
files will be optimized -
#9643
e9a72d9a91a3741566866bcaab11172cb0dc7d31
Thanks @blackmann! - Adds a newmarkdown.shikiConfig.transformers
config option. You can use this option to transform the Shikiji hast (AST format of the generated HTML) to customize the final HTML. Also updates Shikiji to the latest stable version.See Shikiji's documentation for more details about creating your own custom transformers, and a list of common transformers you can add directly to your project.
- #9349
270c6cc27
Thanks @lilnasy! - Fixes an issue where this package could not be installed alongside Astro 4.0.
-
#9138
abf601233
Thanks @bluwy! - Updates the unified, remark, and rehype dependencies to latest. Make sure to update your custom remark and rehype plugins as well to be compatible with the latest versions.Potentially breaking change: The default value of
markdown.remarkRehype.footnoteBackLabel
is changed from"Back to content"
to"Back to reference 1"
. See themdast-util-to-hast
commit for more information. -
#9182
c7953645e
Thanks @bluwy! - Removes deprecated APIs. All Astro packages had been refactored to not use these APIs.
-
#9138
abf601233
Thanks @bluwy! - Updates the unified, remark, and rehype dependencies to latest. Make sure to update your custom remark and rehype plugins as well to be compatible with the latest versions.Potentially breaking change: The default value of
markdown.remarkRehype.footnoteBackLabel
is changed from"Back to content"
to"Back to reference 1"
. See themdast-util-to-hast
commit for more information. -
#9182
c7953645e
Thanks @bluwy! - Removes deprecated APIs. All Astro packages had been refactored to not use these APIs.
-
#9147
addb57c8e
Thanks @bluwy! - FixesRemarkRehype
type'shandler
andhandlers
properties -
Updated dependencies [
abf601233
,6201bbe96
,cdabf6ef0
,1c48ed286
,37697a2c5
,bd0c2e9ae
,0fe3a7ed5
,710be505c
,153a5abb9
]:
- #9083
4537ecf0d
Thanks @bluwy! - ExportscreateShikiHighlighter
for low-level syntax highlighting usage
- #8903
c5010aad3
Thanks @horo-fox! - Adds experimental support for multiple shiki themes with the newmarkdown.shikiConfig.experimentalThemes
option.
-
#8502
c4270e476
Thanks @bluwy! - Updates the internalshiki
syntax highlighter toshikiji
, an ESM-focused alternative that simplifies bundling and maintenance.There are no new options and no changes to how you author code blocks and syntax highlighting.
Potentially breaking change: While this refactor should be transparent for most projects, the transition to
shikiji
now produces a smaller HTML markup by attaching a fallbackcolor
style to thepre
orcode
element, instead of to the linespan
directly. For example:Before:
<code class="astro-code" style="background-color: #24292e"> <pre> <span class="line" style="color: #e1e4e8">my code</span> </pre> </code>
After:
<code class="astro-code" style="background-color: #24292e; color: #e1e4e8"> <pre> <span class="line">my code<span> </pre> </code>
This does not affect the colors as the
span
will inherit thecolor
from the parent, but if you're relying on a specific HTML markup, please check your site carefully after upgrading to verify the styles.
- Updated dependencies [
2993055be
,c4270e476
,bd5aa1cd3
,f369fa250
,391729686
,f999365b8
,b2ae9ee0c
,0abff97fe
,3bef32f81
]:
-
#8715
21f482657
Thanks @cprass! - Removeis:raw
from remark Shiki plugin -
#8737
6f60da805
Thanks @ematipico! - Add provenance statement when publishing the library from CI -
Updated dependencies [
6f60da805
,d78806dfe
,d1c75fe15
,aa265d730
,78adbc443
,21e0757ea
,357270f2a
]:
-
#8475
d93987824
Thanks @webpro! - feat(markdown): Add support forimageReference
paths when collecting images -
#8532
7522bb491
Thanks @bluwy! - ExportcreateMarkdownProcessor
and deprecaterenderMarkdown
API
-
#8179
6011d52d3
Thanks @matthewp! - Astro 3.0 Release Candidate -
#8169
e79e3779d
Thanks @bluwy! - Remove pre-shiki v0.14 theme names for compatibility. Please rename to the new theme names to migrate:material-darker
->material-theme-darker
material-default
->material-theme
material-lighter
->material-theme-lighter
material-ocean
->material-theme-ocean
material-palenight
->material-theme-palenight
- Updated dependencies [
d0679a666
,db39206cb
,adf9fccfd
,0c7b42dc6
,46c4c0e05
,364d861bd
,2484dc408
,81545197a
,6011d52d3
,c2c71d90c
,cd2d7e769
,80f1494cd
,e45f30293
,c0de7a7b0
,65c354969
,3c3100851
,34cb20021
,a824863ab
,44f7a2872
,1048aca55
,be6bbd2c8
,9e021a91c
,7511a4980
,c37632a20
,acf652fc1
,42785c7b7
,8450379db
,dbc97b121
,7d2f311d4
,2540feedb
,ea7ff5177
,68efd4a8b
,7bd1b86f8
,036388f66
,519a1c4e8
,1f58a7a1b
,2ae9d37f0
,a8f35777e
,70f34f5a3
,5208a3c8f
,84af8ed9d
,f003e7364
,ffc9e2d3d
,732111cdc
,0f637c71e
,33b8910cf
,8a5b0c1f3
,148e61d24
,e79e3779d
,632579dc2
,3674584e0
,1db4e92c1
,e7f872e91
,16f09dfff
,4477bb41c
,55c10d1d5
,3e834293d
,96beb883a
,997a0db8a
,80f1494cd
,0f0625504
,e1ae56e72
,f32d093a2
,f01eb585e
,b76c166bd
,a87cbe400
,866ed4098
,767eb6866
,32669cd47
]:- @astrojs/[email protected]
- [email protected]
-
#8179
6011d52d3
Thanks @matthewp! - Astro 3.0 Release Candidate -
#8169
e79e3779d
Thanks @bluwy! - Remove pre-shiki v0.14 theme names for compatibility. Please rename to the new theme names to migrate:material-darker
->material-theme-darker
material-default
->material-theme
material-lighter
->material-theme-lighter
material-ocean
->material-theme-ocean
material-palenight
->material-theme-palenight
- Updated dependencies [
adf9fccfd
,582132328
,81545197a
,6011d52d3
,be6bbd2c8
,42785c7b7
,95120efbe
,2ae9d37f0
,f003e7364
,732111cdc
,33b8910cf
,e79e3779d
,179796405
,a87cbe400
,767eb6866
]:- [email protected]
- @astrojs/[email protected]
- Updated dependencies [
1eae2e3f7
,76ddef19c
,9b4f70a62
,3fdf509b2
,2f951cd40
,c022a4217
,67becaa58
,bc37331d8
,dfc2d93e3
,3dc1ca2fa
,1be84dfee
,35f01df79
,3fdf509b2
,78de801f2
,59d6e569f
,7723c4cc9
,fb5cd6b56
,631b9c410
]:- @astrojs/[email protected]
- [email protected]
-
#7104
826e02890
Thanks @bluwy! - Specify"files"
field to only publish necessary files -
Updated dependencies [
4516d7b22
,e186ecc5e
,c6d7ebefd
,914c439bc
,e9fc2c221
,075eee08f
,719002ca5
,fc52681ba
,fb84622af
,cada10a46
,cd410c5eb
,73ec6f6c1
,410428672
,763ff2d1e
,c1669c001
,3d525efc9
,826e02890
]:- [email protected]
- @astrojs/[email protected]
- #6932
49514e4ce
Thanks @bluwy! - Upgrade shiki to v0.14.1. This updates the shiki theme colors and adds the theme name to thepre
tag, e.g.<pre class="astro-code github-dark">
.
-
#6824
2511d58d5
Thanks @Princesseuh! - Add support for using optimized and relative images in MDX files withexperimental.assets
-
#6744
a1a4f45b5
Thanks @Princesseuh! - Fix remote images in Markdown throwing errors when usingexperimental.assets
-
Updated dependencies [
489dd8d69
,a1a4f45b5
,a1108e037
,8b88e4cf1
,d54cbe413
,4c347ab51
,ff0430786
,2f2e572e9
,7116c021a
]:
-
#6604
7f7a8504b
Thanks @Princesseuh! - Fix using optimized images in Markdown not working
-
#6559
90e5f87d0
Thanks @Princesseuh! - Vendorimage-size
to fix CJS-related issues -
#6555
f5fddafc2
Thanks @Princesseuh! - Add avalidateOptions
hook to the Image Service API in order to set default options and validate the passed options -
Updated dependencies [
04dddd783
,ea9b3dd72
,bf024cb34
,22955b895
,f413446a8
,90e5f87d0
,388190102
,035c0c4df
,f112c12b1
,689884251
,fa132e35c
,f5fddafc2
,283734525
,66858f1f2
,6c465e958
]:
-
#6344
694918a56
Thanks @Princesseuh! - Add a new experimental flag (experimental.assets
) to enable our new core Assets story.This unlocks a few features:
- A new built-in image component and JavaScript API to transform and optimize images.
- Relative images with automatic optimization in Markdown.
- Support for validating assets using content collections.
- and more!
See Assets (Experimental) on our docs site for more information on how to use this feature!
-
#6213
afbbc4d5b
Thanks @Princesseuh! - Updated compilation settings to disable downlevelling for Node 14
- Updated dependencies [
fec583909
,b087b83fe
,694918a56
,a20610609
,a4a74ab70
,75921b3cd
,afbbc4d5b
]:- [email protected]
- @astrojs/[email protected]
-
#5978
7abb1e905
Thanks @HiDeoo! - Fix MDX heading IDs generation when using a frontmatter reference -
Updated dependencies [
b53e0717b
,60b32d585
,883e0cc29
,dabce6b8c
,aedf23f85
]:
-
#5687
e2019be6f
Thanks @bholmesdev! - Give remark and rehype plugins access to user frontmatter via frontmatter injection. This meansdata.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:export function remarkInjectSocialImagePlugin() { return function (tree, file) { const { frontmatter } = file.data.astro; frontmatter.socialImageSrc = new URL(frontmatter.imageSrc, 'https://my-blog.com/').pathname; }; }
When using Content Collections, you can access this modified frontmatter using the
remarkPluginFrontmatter
property returned when rendering an entry.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: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.
-
#5785
16107b6a1
Thanks @delucis! - Drop support for legacy Astro-flavored Markdown -
#5684
a9c292026
& #576993e633922
Thanks @bholmesdev! - Refine Markdown and MDX configuration options for ease-of-use.-
Markdown
-
Replace the
extendDefaultPlugins
option with agfm
boolean and asmartypants
boolean. These are enabled by default, and can be disabled to remove GitHub-Flavored Markdown and SmartyPants. -
Ensure GitHub-Flavored Markdown and SmartyPants are applied whether or not custom
remarkPlugins
orrehypePlugins
are configured. If you want to apply custom plugins and remove Astro's default plugins, manually setgfm: false
andsmartypants: false
in your config.
-
-
Migrate
extendDefaultPlugins
togfm
andsmartypants
You may have disabled Astro's built-in plugins (GitHub-Flavored Markdown and Smartypants) with the
extendDefaultPlugins
option. This has now been split into 2 flags to disable each plugin individually:markdown.gfm
to disable GitHub-Flavored Markdownmarkdown.smartypants
to disable SmartyPants
// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ markdown: { - extendDefaultPlugins: false, + smartypants: false, + gfm: false, } });
Additionally, applying remark and rehype plugins no longer disables
gfm
andsmartypants
. You will need to opt-out manually by settinggfm
andsmartypants
tofalse
. -
MDX
-
Support all Markdown configuration options (except
drafts
) from your MDX integration config. This includessyntaxHighlighting
andshikiConfig
options to further customize the MDX renderer. -
Simplify
extendPlugins
to anextendMarkdownConfig
option. MDX options will default to their equivalent in your Markdown config. By settingextendMarkdownConfig
to false, you can "eject" to set your own syntax highlighting, plugins, and more.
-
-
Migrate MDX's
extendPlugins
toextendMarkdownConfig
You may have used the
extendPlugins
option to manage plugin defaults in MDX. This has been replaced by 3 flags:extendMarkdownConfig
(true
by default) to toggle Markdown config inheritance. This replaces theextendPlugins: 'markdown'
option.gfm
(true
by default) andsmartypants
(true
by default) to toggle GitHub-Flavored Markdown and SmartyPants in MDX. This replaces theextendPlugins: 'defaults'
option.
-
-
#5825
52209ca2a
Thanks @bholmesdev! - Baseline the experimentalcontentCollections
flag. You're free to remove this from your astro config!import { defineConfig } from 'astro/config'; export default defineConfig({ - experimental: { contentCollections: true } })
-
#5806
7572f7402
Thanks @matthewp! - Make astro apeerDependency
of integrationsThis marks
astro
as apeerDependency
of several packages that are already gettingmajor
version bumps. This is so we can more properly track the dependency between them and what version of Astro they are being used with.
Patch Changes
-
#5837
12f65a4d5
Thanks @giuseppelt! - fix shiki css class replace logic -
Updated dependencies [
93e633922
,16dc36a87
,01f3f463b
,e2019be6f
,05caf445d
,49ab4f231
,a342a486c
,8fb28648f
,1f92d64ea
,c2180746b
,ae8a012a7
,cf2de5422
,ce5c5dbd4
,ec09bb664
,665a2c222
,259a539d7
,f7aa1ec25
,4987d6f44
,304823811
,302e0ef8f
,55cea0a9d
,dd56c1941
,9963c6e4d
,be901dc98
,f6cf92b48
,e818cc046
,8c100a6fe
,116d8835c
,840412128
,1f49cddf9
,7325df412
,16c7d0bfd
,a9c292026
,2a5786419
,4a1cabfe6
,a8d3e7924
,fa8c131f8
,64b8082e7
,c4b0cb8bf
,23dc9ea96
,63a6ceb38
,a3a7fc929
,52209ca2a
,5fd9208d4
,5eba34fcc
,899214298
,3a00ecb3e
,5eba34fcc
,2303f9514
,1ca81c16b
,b66d7195c
]:- [email protected]
- @astrojs/[email protected]
See changes in 2.0.0-beta.2
-
#5785
16107b6a1
Thanks @delucis! - Drop support for legacy Astro-flavored Markdown -
#5825
52209ca2a
Thanks @bholmesdev! - Baseline the experimentalcontentCollections
flag. You're free to remove this from your astro config!import { defineConfig } from 'astro/config'; export default defineConfig({ - experimental: { contentCollections: true } })
-
#5806
7572f7402
Thanks @matthewp! - Make astro a peerDependency of integrationsThis marks
astro
as a peerDependency of several packages that are already gettingmajor
version bumps. This is so we can more properly track the dependency between them and what version of Astro they are being used with.
-
#5837
12f65a4d5
Thanks @giuseppelt! - fix shiki css class replace logic -
Updated dependencies [
01f3f463b
,1f92d64ea
,c2180746b
,ae8a012a7
,cf2de5422
,ec09bb664
,665a2c222
,f7aa1ec25
,302e0ef8f
,840412128
,1f49cddf9
,4a1cabfe6
,c4b0cb8bf
,23dc9ea96
,63a6ceb38
,52209ca2a
,2303f9514
]:- [email protected]
- @astrojs/[email protected]
See changes in 2.0.0-beta.1
-
#5769
93e633922
Thanks @bholmesdev! - Introduce asmartypants
flag to opt-out of Astro's default SmartyPants plugin.{ markdown: { smartypants: false, } }
You may have disabled Astro's built-in plugins (GitHub-Flavored Markdown and Smartypants) with the
extendDefaultPlugins
option. This has now been split into 2 flags to disable each plugin individually:markdown.gfm
to disable GitHub-Flavored Markdownmarkdown.smartypants
to disable SmartyPants
// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ markdown: { - extendDefaultPlugins: false, + smartypants: false, + gfm: false, } });
See changes in 2.0.0-beta.0
-
#5687
e2019be6f
Thanks @bholmesdev! - Give remark and rehype plugins access to user frontmatter via frontmatter injection. This meansdata.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:export function remarkInjectSocialImagePlugin() { return function (tree, file) { const { frontmatter } = file.data.astro; frontmatter.socialImageSrc = new URL(frontmatter.imageSrc, 'https://my-blog.com/').pathname; }; }
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 toremarkPluginFrontmatter
. This should clarify this plugin is still separate from thedata
export Content Collections expose today.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: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.
-
#5684
a9c292026
Thanks @bholmesdev! - Refine Markdown and MDX configuration options for ease-of-use.- Remove
remark-smartypants
from Astro's default Markdown plugins. - Replace the
extendDefaultPlugins
option with a simplifiedgfm
boolean. This is enabled by default, and can be disabled to remove GitHub-Flavored Markdown. - Ensure GitHub-Flavored Markdown is applied whether or not custom
remarkPlugins
orrehypePlugins
are configured. If you want to apply custom plugins and remove GFM, manually setgfm: false
in your config.
- Support all Markdown configuration options (except
drafts
) from your MDX integration config. This includessyntaxHighlighting
andshikiConfig
options to further customize the MDX renderer. - Simplify
extendDefaults
to anextendMarkdownConfig
option. MDX options will default to their equivalent in your Markdown config. By settingextendMarkdownConfig
to false, you can "eject" to set your own syntax highlighting, plugins, and more.
To preserve your existing Markdown and MDX setup, you may need some configuration changes:
Smartypants has been removed from Astro's default setup. If you rely on this plugin, install
remark-smartypants
and apply to yourastro.config.*
:// astro.config.mjs import { defineConfig } from 'astro/config'; + import smartypants from 'remark-smartypants'; export default defineConfig({ markdown: { + remarkPlugins: [smartypants], } });
You may have disabled Astro's built-in plugins (GitHub-Flavored Markdown and Smartypants) with the
extendDefaultPlugins
option. Since Smartypants has been removed, this has been renamed togfm
.// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ markdown: { - extendDefaultPlugins: false, + gfm: false, } });
Additionally, applying remark and rehype plugins no longer disables
gfm
. You will need to opt-out manually by settinggfm
tofalse
.You may have used the
extendPlugins
option to manage plugin defaults in MDX. This has been replaced by 2 flags:extendMarkdownConfig
(true
by default) to toggle Markdown config inheritance. This replaces theextendPlugins: 'markdown'
option.gfm
(true
by default) to toggle GitHub-Flavored Markdown in MDX. This replaces theextendPlugins: 'defaults'
option.
- Remove
-
#5654
2c65b433b
Thanks @delucis! - Refactor and exportrehypeHeadingIds
pluginThe
rehypeHeadingIds
plugin injects IDs for all headings in a Markdown document and can now also handle MDX inputs if needed. You can import and use this plugin if you need heading IDs to be injected before other rehype plugins run.
- #5648
853081d1c
Thanks @bholmesdev! - Prevent relative image paths insrc/content/
-
#4842
812658ad2
Thanks @bluwy! - Fix non-hoisted remark/rehype plugin loading -
#4842
812658ad2
Thanks @bluwy! - Add missing dependencies, support strict dependency installation (e.g. pnpm)
- #4474
ac0321824
Thanks @bholmesdev! - Add "extends" to markdown plugin config to preserve Astro defaults
- #4474
ac0321824
Thanks @bholmesdev! - Add "extends" to markdown plugin config to preserve Astro defaults
-
04ad44563
- > Astro v1.0 is out! Read the official announcement post.No breaking changes. This package is now officially stable and compatible with
[email protected]
!
- Updated dependencies [
04ad44563
]:- @astrojs/[email protected]
- #4176
2675b8633
Thanks @bholmesdev! - Support frontmatter injection for MD and MDX using remark and rehype plugins
- #4137
471c6f784
Thanks @bholmesdev! - Speed up internal markdown builds with new vite-plugin markdown
- #4169
16034f0dd
Thanks @hippotastic! - Fix double-escaping of non-highlighted code blocks in Astro-flavored markdown
- #4114
64432bcb8
Thanks @Princesseuh! - Refactor@astrojs/mdx
and@astrojs/markdown-remark
to use@astrojs/prism
instead of duplicating the code
- Updated dependencies [
64432bcb8
]:- @astrojs/[email protected]
ba11b3399
Thanks @RafidMuhymin! - fixed generated slugs in markdown that ends with a dash
-
#4016
00fab4ce1
Thanks @bholmesdev! - The use of components and JSX expressions in Markdown are no longer supported by default.For long term support, migrate to the
@astrojs/mdx
integration for MDX support (including.mdx
pages!).Not ready to migrate to MDX? Add the legacy flag to your Astro config to re-enable the previous Markdown support.
// https://astro.build/config export default defineConfig({ legacy: { astroFlavoredMarkdown: true, }, });
- #4031
6e27a5fdc
Thanks @natemoo-re! - BREAKING Renamed Markdown utility functiongetHeaders()
togetHeadings()
.
- #4008
399d7e269
Thanks @bholmesdev! - Avoid parsing JSX, components, and Astro islands when using "plain" md mode. This bringsmarkdown.mode: 'md'
in-line with our docs description.
- #3924
07fb544da
Thanks @FredKSchott! - Remove unused ssr-utils file
- Updated dependencies [
31f9c0bf0
]:- @astrojs/[email protected]
- #3919
01a55467d
Thanks @FredKSchott! - Add back missing ssr-utils.js file
-
#3911
ca45c0c27
Thanks @JuanM04! - Don't throw when Shiki doesn't recognize a language -
Updated dependencies [
b48767985
]:- @astrojs/[email protected]
- #3669
93e1020b1
Thanks @natemoo-re! - Tooling: reintroduce smoke test across example projects
- Updated dependencies [
1cc5b7890
]:- @astrojs/[email protected]
- #3638
80c71c7c
Thanks @tony-sull! - Fix: HTML comments in markdown code blocks should not be wrapped in JS comments
- #3612
fca58cfd
Thanks @bholmesdev! - Fix: "vpath" import error when building for netlify edge
- #3630
48e67fe0
Thanks @tony-sull! - Encodes ampersand characters in code blocks
- #3620
05aa7244
Thanks @hippotastic! - Remove extra newlines around Markdown components
- #3572
5c73f614
Thanks @hippotastic! - Fix remarkMdxish performance issue on huge sites
- #3564
76fb01cf
Thanks @hippotastic! - Fix autolinking of URLs inside links
- #3554
c549f161
Thanks @hippotastic! - Allow AlpineJS syntax extensions in Markdown
- #3514
6c955ca6
Thanks @hippotastic! - Fix Markdown errors missing source filename
- #3516
30578015
Thanks @hippotastic! - Fix: Allow self-closing tags in Markdown
- #3486
119ecf8d
Thanks @hippotastic! - Fix components in markdown regressions
- #3444
51db2b9b
Thanks @bholmesdev! - Fix: markdown imports failing due to internal dependency issue
- #3410
cfae9760
Thanks @natemoo-re! - Significantally more stable behavior for "Markdown + Components" usage, which now handles component serialization much more similarly to MDX. Also supports switching between Components and Markdown without extra newlines, removes wrapping<p>
tags from standalone components, and improves JSX expression handling.
- #3234
de123b28
Thanks @JuanM04! - Removedrehype-slug
in favor of our own implementation. The behavior of the slugging should remain the same
- #3152
9ba1f4f8
Thanks @bholmesdev! - Fix JSX expression inconsistencies within markdown files
- #3108
ef198ff8
Thanks @FredKSchott! - shiki: Adddiff
symbol handling to disableuser-select
on+
/-
symbols.
53162534
Thanks @FredKSchott! - - RemovedrenderMarkdownWithFrontmatter
because it wasn't being used- All options of
renderMarkdown
are now required — see the exported interfaceAstroMarkdownOptions
- New types: RemarkPlugin, RehypePlugin and ShikiConfig
- All options of
e425f896
Thanks @FredKSchott! - Update config options to respect RFC0019
- #2824
0a3d3e51
Thanks @bholmesdev! - Change shiki to our default markdown syntax highlighter. This includes updates to all relevant starter projects that used Prism-specific styles.
-
#2870
d763ec18
Thanks @FredKSchott! - Fix a shiki performance issue affecting large sites -
Updated dependencies [
2db97f10
]:- @astrojs/[email protected]
-
#2870
d763ec18
Thanks @FredKSchott! - Fix a shiki performance issue affecting large sites -
Updated dependencies [
2db97f10
]:- @astrojs/[email protected]
- #2824
0a3d3e51
Thanks @bholmesdev! - Change shiki to our default markdown syntax highlighter. This includes updates to all relevant starter projects that used Prism-specific styles.
- #2697
91765d79
Thanks @FredKSchott! - Improve performance by optimizing calls togetHighlighter
- #2534
cfeaa941
Thanks @JuanM04! - Now you can use local plugins by passing a function instead of animport
- #2518
2bc91543
Thanks @JuanM04! - Added the ability to use custom themes and langs with Shiki (<Code />
and@astrojs/markdown-remark
)
- #2534
cfeaa941
Thanks @JuanM04! - Now you can use local plugins by passing a function instead of animport
- #2518
2bc91543
Thanks @JuanM04! - Added the ability to use custom themes and langs with Shiki (<Code />
and@astrojs/markdown-remark
)
- #2202
45cea6ae
Thanks @jonathantneal! - Officially drop support for Node v12. The minimum supported version is now Node v14.15+,
- Updated dependencies [
45cea6ae
]:- @astrojs/[email protected]
- 679d4395: - Upgraded dependencies
- Replaced
remark-slug
withrehype-slug
because it was deprecated - Replaced
@silvenon/remark-smartypants
withremark-smartypants
because its name was changed - Disable all built-in plugins when custom remark and/or rehype plugins are added
- Removed
remark-footnotes
becauseremark-gfm
now supports footnotes - Re-added
remark-smartypants
andrehype-slug
to the default plugins list
- Replaced
- e6aaeff5: Initial release.
- Updated dependencies [e6aaeff5]
- @astrojs/[email protected]
- 00d2b625: Move gray-matter to deps
- 7eaabbb0: Fix bug where code blocks would not be escaped properly
- d84bfe71: Adds prism support within the Markdown plugin.
- Updated dependencies [d84bfe71]
- @astrojs/[email protected]
- b03f8771: Fix parsing of an empty
<pre></pre>
tag in markdown files, which expected the pre tag to have a child - b03f8771: Fix the importing of
unified
Plugin
andUnifiedPlugin
types
- 397d8f3d: Upgrade
@astrojs/markdown-support
dependencies. Theremark-rehype@9
upgrade enables accessible footnotes withremark-footnotes
.
- a421329f: Fix the left-brace issue
- 460e625: Move remaining missing dependencies
- 7015356: Move rehype-raw to a dependency
- 70f0a09: Added remark-slug to default plugins
-
d396943: Add support for
remark
andrehype
plugins for both.md
pages and.astro
pages using the<Markdown>
component.For example, the
astro.config.mjs
could be updated to include the following. Read the Markdown documentation for more information.Note Enabling custom
remarkPlugins
orrehypePlugins
removes Astro's built-in support for GitHub-flavored Markdown support, Footnotes syntax, Smartypants. You must explicitly add these plugins to yourastro.config.mjs
file, if desired.export default { markdownOptions: { remarkPlugins: ['remark-slug', ['remark-autolink-headings', { behavior: 'prepend' }]], rehypePlugins: ['rehype-slug', ['rehype-autolink-headings', { behavior: 'prepend' }]], }, };
- f83407e: Expose
html
toAstro.fetchContent
(#571)
- f9f2da4: Add repository key to all package.json
- 50e6f49: Fixes issues with using astro via the create script