Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
@astrojs/mdx
Advanced tools
This Astro integration enables the usage of MDX components and allows you to create pages as .mdx
files.
MDX allows you to use variables, JSX expressions and components within Markdown content in Astro. If you have existing content authored in MDX, this integration allows you to bring those files to your Astro project.
The astro add
command-line tool automates the installation for you. Run one of the following commands in a new terminal window. (If you aren't sure which package manager you're using, run the first command.) Then, follow the prompts, and type "y" in the terminal (meaning "yes") for each one.
# Using NPM
npx astro add mdx
# Using Yarn
yarn astro add mdx
# Using PNPM
pnpm astro add mdx
If you run into any issues, feel free to report them to us on GitHub and try the manual installation steps below.
First, install the @astrojs/mdx
package using your package manager. If you're using npm or aren't sure, run this in the terminal:
npm install @astrojs/mdx
Then, apply this integration to your astro.config.*
file using the integrations
property:
astro.config.mjs
import { defineConfig } from 'astro/config';
import mdx from '@astrojs/mdx';
export default defineConfig({
// ...
integrations: [mdx()],
});
VS Code supports Markdown by default. However, for MDX editor support, you may wish to add the following setting in your VSCode config. This ensures authoring MDX files provides a Markdown-like editor experience.
"files.associations": {
"*.mdx": "markdown"
}
With the Astro MDX integration, you can add MDX pages to your project by adding .mdx
files within your src/pages/
directory. You can also import .mdx
files into .astro
files.
Astro's MDX integration adds extra features to standard MDX, including Markdown-style frontmatter. This allows you to use most of Astro's built-in Markdown features like a special frontmatter layout
property and a property for marking a page as a draft.
See how MDX works in Astro with examples in our Markdown & MDX guide.
Visit the MDX docs to learn about using standard MDX features.
Once the MDX integration is installed, no configuration is necessary to use .mdx
files in your Astro project.
You can extend how your MDX is rendered by adding remark, rehype and recma plugins.
extendPlugins
You can customize how MDX files inherit your project’s existing Markdown configuration using the extendPlugins
option.
markdown
(default)Astro's MDX files will inherit all markdown
options in your Astro configuration file, which includes the GitHub-Flavored Markdown and Smartypants plugins by default.
Any additional plugins you apply in your MDX config will be applied after your configured Markdown plugins.
astroDefaults
Astro's MDX files will apply only Astro's default plugins, without inheriting the rest of your Markdown config.
This example will apply the default GitHub-Flavored Markdown and Smartypants plugins alongside remark-toc
to your MDX files, while ignoring any markdown.remarkPlugins
configuration:
// astro.config.mjs
import remarkToc from 'remark-toc';
export default {
markdown: {
remarkPlugins: [/** ignored */]
},
integrations: [mdx({
remarkPlugins: [remarkToc],
// Astro defaults applied
extendPlugins: 'astroDefaults',
})],
}
false
Astro's MDX files will not inherit any markdown
options, nor will any Astro Markdown defaults be applied:
// astro.config.mjs
import remarkToc from 'remark-toc';
export default {
integrations: [mdx({
remarkPlugins: [remarkToc],
// Astro defaults not applied
extendPlugins: false,
})],
}
remarkRehype
Markdown content is transformed into HTML through remark-rehype which has a number of options.
You can set remark-rehype options in your config file:
// astro.config.mjs
export default {
integrations: [mdx({
remarkRehype: {
footnoteLabel: 'Catatan kaki',
footnoteBackLabel: 'Kembali ke konten',
},
})],
};
This inherits the configuration of markdown.remarkRehype
. This behavior can be changed by configuring extendPlugins
.
remarkPlugins
Browse awesome-remark for a full curated list of remark plugins to extend your Markdown's capabilities.
This example applies the remark-toc
plugin to .mdx
files. To customize plugin inheritance from your Markdown config or Astro's defaults, see the extendPlugins
option.
// astro.config.mjs
import remarkToc from 'remark-toc';
export default {
integrations: [mdx({
remarkPlugins: [remarkToc],
})],
}
rehypePlugins
Browse awesome-rehype for a full curated list of Rehype plugins to transform the HTML that your Markdown generates.
We apply our own (non-removable) collect-headings
plugin. This applies IDs to all headings (i.e. h1 -> h6
) in your MDX files to link to headings via anchor tags.
This example applies the rehype-accessible-emojis
plugin to .mdx
files. To customize plugin inheritance from your Markdown config or Astro's defaults, see the extendPlugins
option.
// astro.config.mjs
import rehypeAccessibleEmojis from 'rehype-accessible-emojis';
export default {
integrations: [mdx({
rehypePlugins: [rehypeAccessibleEmojis],
})],
}
recmaPlugins
These are plugins that modify the output estree directly. This is useful for modifying or injecting JavaScript variables in your MDX files.
We suggest using AST Explorer to play with estree outputs, and trying estree-util-visit
for searching across JavaScript nodes.
For help, check out the #support
channel on Discord. Our friendly Support Squad members are here to help!
You can also check our Astro Integration Documentation for more on integrations.
This package is maintained by Astro's Core team. You're welcome to submit an issue or PR!
See CHANGELOG.md for a history of changes to this integration.
FAQs
Add support for MDX pages in your Astro site
The npm package @astrojs/mdx receives a total of 44,277 weekly downloads. As such, @astrojs/mdx popularity was classified as popular.
We found that @astrojs/mdx demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.