Skip to navigation
3-4 minutes read
By Titus Wormer

Contribute

This article explains how to contribute to MDX. Please read through the following guidelines.

Important: before participating in our community, please read our code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.

Contributions

There’s several ways to contribute, not just by writing code. If you have questions, see § Support. If you can provide financial support, see § Sponsor.

Improve docs

As a user you’re perfect for helping us improve our docs. Typo corrections, error fixes, better explanations, new examples, etcetera. All MDX docs live in docs/.

You can run the docs locally by following those steps:

  • Use Node.js 14
  • Install latest npm (not the one coming with Node.js 14): npm install -g npm
  • Install repository packages: npm install
  • Build the docs site: npm run docs-prod
  • Test the static docs site: npx serve public

Improve issues

Some issues lack information, aren’t reproducible, or are just incorrect. You can help by trying to make them easier to resolve. Existing issues might benefit from your unique experience or opinions.

Write code

Code contributions are very welcome. It’s probably a good idea to first post a question or open an issue to report a bug or suggest a new feature before creating a pull request.

Submitting an issue

  • The issue tracker is for issues. Use discussions for support
  • Search the issue tracker (including closed issues) before opening a new issue
  • Ensure you’re using the latest version of our packages
  • Use a clear and descriptive title
  • Include as much information as possible: steps to reproduce the issue, error message, version, operating system, etcetera
  • The more time you put into an issue, the better we will be able to help you
  • The best issue report is a failing test proving it

Submitting a pull request

  • See ¶ Project below for info on how the project is structured, how to test, and how to build the site
  • Non-trivial changes are often best discussed in an issue first, to prevent you from doing unnecessary work
  • For ambitious tasks, you should try to get your work in front of the community for feedback as soon as possible
  • New features should be accompanied by tests and documentation
  • Don’t include unrelated changes
  • Test before submitting code by running npm test
  • Write a convincing description of why we should land your pull request: it’s your job to convince us

Project

Structure

MDX is a monorepo. All packages are in packages/. Documentation is in docs/.

Tests

To run the tests, first do npm install, then do npm test. This ensures everything is okay, from code style to unit tests to types.

Site

To build the site, first do npm install, then do npm run docs. This produces the website in public/.

Important: the site uses several experimental packages. They require Node.js 14, and don’t work in earlier or later versions. To build the site, please use Node.js 14 (with nvm: nvm use 14).

Release

To release a new version, do:

  1. update versions of packages with a patch, minor, or major (make sure to update dependency ranges on monorepo packages when needed):
    Shell
    npm version minor --workspaces --no-git-tag-version
    
  2. commit and tag using the version (without v) as the message:
    Shell
    git commit --all --message 1.2.3 && git tag 1.2.3 && git push && git push --tags
    
  3. release to the npm registry:
    Shell
    npm publish --workspaces
    
  4. add a changelog entry for the release on GitHub:
    Shell
    open https://github.com/mdx-js/mdx/releases
    

Resources