Skip to content

Move remarkPlugins to markdown config #5999

Open
@Josh-Cena

Description

Have you read the Contributing Guidelines on issues?

Description

Current plugin-level remark/rehype configuration should be replaced with a global configuration.

Has this been requested on Canny?

No

Motivation

After #5972 we will have a siteConfig.markdown field. It's time to populate it with more options.

API design

It will accept a function or an array (inspired by Babel's caller):

module.exports = {
  markdown: {
    // Note: this will disable default plugins, see below
    remarkPlugins: ({plugin}) => plugin.name === 'content-docs' ? [math] : [],
    rehypePlugins: [katex],
  }
}

Moreover, this API would allow us to override default plugins (#5450), inspired by SVGO's approach of using presets. I.e. you would need to explicitly need to tell Docusaurus where to insert the default plugins:

module.exports = {
  markdown: {
    // math is before the default plugins, like using the beforeDefaultRemarkPlugins we had before
    remarkPlugins: [math, 'docusaurus-remark-preset'],
    rehypePlugins: [katex],
  }
}

To disable a particular plugin or pass in options, do it as you expect:

module.exports = {
  markdown: {
    remarkPlugins: [[
      'docusaurus-remark-preset',
      {
        emoji: false,
        transformLinks: {ignore: /\.json/},
      },
    ]],
  }
}

I don't think it's necessary for us to insert extra plugins somewhere between default plugins, so treating them as a chunk is fine.

I also propose that we have more built-in plugins to be enabled, e.g. we can move npm2yarn to the preset. I also want to build another plugin that transforms style="color:red" to style={{color:'red'}} and class="foo" to className="foo" (i.e. make casual users happy)

Have you tried building it?

No

Self-service

  • I'd be willing to contribute this feature to Docusaurus myself.

Metadata

Assignees

No one assigned

    Labels

    apprenticeIssues that are good candidates to be handled by a Docusaurus apprentice / traineedomain: markdownRelated to Markdown parsing or syntaxfeatureThis is not a bug or issue with Docusausus, per se. It is a feature request for the future.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions