Skip to content

Latest commit

 

History

History
63 lines (39 loc) · 4.16 KB

CONTRIBUTING.md

File metadata and controls

63 lines (39 loc) · 4.16 KB

Contributing

Thank you for your interest in contributing to XState! Contributors like you make this project possible, and we welcome any contributions to the code base and the documentation.

There are several ways you can contribute to XState:

Please read our code of conduct.

Environment

  • Ensure you have the latest version of Node and Yarn.
  • Run yarn to install all needed dev dependencies.

Making changes

Pull requests are encouraged. If you want to add a feature or fix a bug:

  1. Fork and clone the repository.
  2. Create a separate branch for your changes.
  3. Make your changes, and ensure that it is formatted by Prettier and type-checks without errors in TypeScript.
  4. Write tests that validate your change and/or fix.
  5. Run yarn build and then run tests with yarn test (for all packages) or yarn test:core (for only changes to core XState).
  6. For package changes, add docs inside the /packages/*/README.md. These docs will be copied on build to the corresponding /docs/packages/*/index.md file.
  7. Create a changeset by running yarn changeset. More about changesets.
  8. Push your branch and open a PR 🚀

PRs are reviewed promptly and merged in within a day or two (or even within an hour) if everything looks good.

Submit an issue

Issues and bug reports are also encouraged. If you want to submit an issue:

  1. Search existing issues to check if your issue already exists or has been solved.
  2. Create a new issue if your issue has not yet been submitted.
  3. Ensure you fill out all the details in the issue template to help us understand the issue.

We’ll try to respond promptly and address your issue as soon as possible.

Contributing to our docs

Our new docs are now in their own docs repo. Read the contribution guide for our Stately Studio and XState docs.

Legacy docs and xstate.js.org

The docs at /docs in this repo are legacy XState docs. They are built using Vuepress and deployed to xstate.js.org/docs using GitHub pages from the gh-pages branch using the pages build and deployment workflow.

The xstate.js.org landing page is currently stored at index.html and deployed from the gh-pages branch using the pages build and deployment workflow.

Setup

Building

We are using preconstruct to build our packages. It comes with a handy trick which allows us to always use source files of packages contained in this monorepo. It creates hook/redirecting files in place of dist files during development. This always happens after installing packages (during postinstall step) and you shouldn't be worried about it, but if you actually build packages you destroy those redirecting files and to run tests, typechecking etc correctly you need to bring them back by running yarn postinstall.

Publishing

We are using changesets to create "release intents" for our packages. When those pop up on master a release PR gets prepared automatically and once it gets merged actual release happen (also automatically).