Feel free to raise an issue if you have a question, an enhancement, or a bug report.
Please ensure you use the issue search functionality to search all opened and closed issues before raising a new issue.
When raising a new issue, please fill out the issue template - please don't skip sections. Please provide as much information as possible. This project is maintained by volunteers, so the more the more information you provide, the less likely we will have to waste everyone's time in asking you for more information.
Help us to help you
Feel free to comment on any open issue if you have more information that you feel like you can provide. If you don't have more information, instead use the "reaction" feature on the root comment for the issue. We use reactions to help gauge which issues are important to the community, so these are the best way to show us an issue is important.
Please refrain from leaving useless comments on issues. Comments like "+1", or "when's this getting fixed", or "any progress on this" just serve as spam, and annoy every single person subscribed to the issue. Generally we will just delete those comments, so save everyone time and think twice.
Please refrain from commenting on old, closed issues and PRs. Your issue is rarely related enough to a closed issue to warrant "necroing" a dead thread - raising a new issue means you can fill in the template, and make it easier for us to help you. Often times if you comment on a closed issue, we will just ask you to open a new issue, so please save everyone's time, and help us to help you.
Please refrain from commenting on master
commits. Commit comments are not searchable, meaning that nobody else can discover your comments. Raise an issue and reference the commit instead so that everyone can see your comment, and you can fill out the template.
Anyone is free to help us build and maintain this project. If you see an issue that needs working on because it's important to you, comment on the issue to help make sure that nobody else works on it at the same time, and then start working.
Developing in this repo is easy:
- First fork the repo, and then clone it locally.
- Create a new branch.
- In the root of the project, run
yarn install
.- This will install the dependencies, link the packages and do a build.
- Make the required changes.
We have a sophisticated CI process setup which gets run on every PR. You must pass all of the checks for us to consider merging your PR. Here is a list of checks that are done automatically, that you can also perform locally before pushing.
- Ensure your code is properly formatted.
- You can run
yarn format
in any package or in the root. - Alternatively, you can run prettier on save.
- You can run
- Ensure there are no typechecking errors.
- You can run
yarn typecheck
in any package or in the root.
- You can run
- Ensure your changes are adequately tested.
- You can run
yarn test
in any package. - We aim for around
90%
branch coverage for every PR. - Coverage reports should automatically be generated locally, and the
codecov
bot should also comment on your PR with the percentage, as well as links to the line-by-line coverage of each file touched by your PR.
- You can run
- Ensure you have no lint errors.
- You can run
yarn lint
in any package or in the root.
- You can run
- If you have made changes to any markdown documentation, ensure there are no spelling errors
- You can run
yarn check:spelling
in the root. - Or if you are using vscode, you can use
Code Spell Checker
plugin.
- You can run
- If you have made changes within the
eslint-plugin
package, ensure the configs and documentation are valid.- You can run
yarn check:configs
andyarn check:docs
in the root, or in theeslint-plugin
folder.
- You can run
Once your changes are ready, you can raise a PR. The title of your PR should match the following format:
<tag>(<package>): <short description>
Where <tag>
is one of:
feat
- for any new functionality additionsfix
- for any bug fixes that don't add new functionalitytest
- if you only change tests, and not shipped codedocs
- if you only change documentation, and not shipped codechore
- anything else
And <package>
is the name of the package you have made changes within (eslint-plugin
, parser
, typescript-estree
, etc). If you make significant changes across multiple packages, you can omit this (i.e. feat: foo bar
).
And <short description>
is a succinct title for the PR.
Within the body of your PR, make sure you reference the issue that you have worked on, as well as pointing out anything of note you wish us to look at during our review.
Make sure you use the "Fixes #xxx" format to reference issues, so that GitHub automatically closes the issues when we merge the PR. Also note that if you are fixing multiple issues at once, you can only reference one issue per line, and must put one "Fixes #xxx" per issue number.
In terms of your commit history - we do not care about the number, or style of commits in your history, because we squash merge every PR into master. Feel free to commit in whatever style you feel comfortable with.
One thing we ask is to please avoid force pushing after you have raised a PR. GitHub is not able to track changes across force pushes, which makes it impossible to efficiently do incremental reviews. This slows us down, and means it will take longer for us to get your PR merged.
With your PR raised, and the CI showing green, your PR will sit in the queue to be reviewed. We generally review PRs oldest to newest, unless we consider a newer PR higher priority (i.e. if it's a bug fix).
Please note that as this project is maintained by volunteers, it may take a while for us to get around to your PR (sometimes a month or more). Be patient, we'll get to it. Please refrain from commenting asking for a review, or similar bump comments. These just create spam for maintainers, and does not push your PR higher in the queue.
Once we have reviewed your PR, we will provide any feedback that needs addressing. If you feel a requested change is wrong, don't be afraid to discuss with us in the comments. Once the feedback is addressed, and the PR is reviewed, we'll ensure the branch is up to date with master, and merge it for you.