Contributing to graphql-js

We want to make contributing to this project as easy and transparent as possible. Hopefully this document makes the process for contributing clear and answers any questions you may have. If not, feel free to open an Issue.

Issues

We use GitHub issues to track public bugs and requests. Please ensure your bug description is clear and has sufficient instructions to be able to reproduce the issue. The best way is to provide a reduced test case on jsFiddle or jsBin.

Pull Requests

All active development of graphql-js happens on GitHub. We actively welcome your pull requests.

Considered Changes

Since graphql-js is a reference implementation of the GraphQL spec, only changes which comply with this spec will be considered. If you have a change in mind which requires a change to the spec, please first open an issue against the spec.

GraphQL Specification Membership Agreement

This repository is managed by EasyCLA. Project participants must sign the free (GraphQL Specification Membership agreement before making a contribution. You only need to do this one time, and it can be signed by individual contributors or their employers.

To initiate the signature process please open a PR against this repo. The EasyCLA bot will block the merge if we still need a membership agreement from you.

You can find detailed information here. If you have issues, please email operations@graphql.org.

If your company benefits from GraphQL and you would like to provide essential financial support for the systems and people that power our community, please also consider membership in the GraphQL Foundation.

Getting Started

  1. Fork this repo by using the "Fork" button in the upper-right

  2. Check out your fork

    git clone git@github.com:your_name_here/graphql-js.git
    
  3. Install or Update all dependencies

    npm install
    
  4. Get coding! If you've added code, add tests. If you've changed APIs, update any relevant documentation or tests. Ensure your work is committed within a feature branch.

  5. Ensure all tests pass

    npm test
    

Coding Style

This project uses Prettier for standard formatting. To ensure your pull request matches the style guides, run npm run prettier.

Release on NPM

Releases on 16.x.x are managed by local scripts and GitHub Actions:

git switch 16.x.x
git switch -c <my_release_branch>
export GH_TOKEN=<token> # required to build changelog via GitHub API requests
npm run release:prepare -- 16.x.x patch

Push <my_release_branch>, open a PR from <my_release_branch> to 16.x.x, wait for CI to pass, merge the PR, and then approve the GitHub Actions release workflow.

License

By contributing to graphql-js, you agree that your contributions will be licensed under its MIT license.