Skip to content

Latest commit

 

History

History
94 lines (61 loc) · 5.57 KB

CONTRIBUTING.md

File metadata and controls

94 lines (61 loc) · 5.57 KB

ESLint React Contributing Guide

Hi! We, the maintainers, are really excited that you are interested in contributing to ESLint React.

Before submitting your contribution though, please make sure to take a moment and read through the Code of Conduct, as well as the appropriate section for the contribution you intend to make:

Important

eslint-react is not a fork of eslint-plugin-react and meanwhile eslint-plugin-react is not upstream of eslint-react.
Therefore, the rules and features you see ineslint-plugin-reactmay not necessarily appear ineslint-react.

Issue Reporting Guidelines

  • The issue list of this repo is exclusively for bug reports and feature requests. Non-conforming issues will be closed immediately.

  • Try to search for your issue, it may have already been answered or even fixed in the development branch.

  • Check if the issue is reproducible with the latest stable version of ESLint React packages. If you are using a pre-release, please indicate the specific version you are using.

  • It is required that you clearly describe the steps necessary to reproduce the issue you are running into. Although we would love to help our users as much as possible, diagnosing issues without clear reproduction steps is extremely time-consuming and simply not sustainable.

  • Use only the minimum amount of code necessary to reproduce the unexpected behavior. A good bug report should isolate specific methods that exhibit unexpected behavior and precisely define how expectations were violated. What did you expect the method or methods to do, and how did the observed behavior differ? The more precisely you isolate the issue, the faster we can investigate.

  • Issues with no clear repro steps will not be triaged. If an issue labeled "need repro" receives no further input from the issue author for more than 5 days, it will be closed.

  • If your issue is resolved but still open, don’t hesitate to close it. In case you found a solution by yourself, it could be helpful to explain how you fixed it.

  • Most importantly, we beg your patience: the team must balance your request against many other responsibilities — fixing other bugs, answering other questions, new features, new documentation, etc. The issue list is not paid support and we cannot make guarantees about how fast your issue can be resolved.

Pull Request Guidelines

  • You have to sign your commits.

  • It's OK to have multiple small commits as you work on the PR - we will let GitHub automatically squash it before merging.

  • If adding new feature:

    • Provide convincing reason to add this feature. Ideally you should open a suggestion issue first and have it greenlighted before working on it.
  • If fixing a bug:

    • If you are resolving a special issue, add (fix: #xxxx[,#xxx]) (#xxxx is the issue id) in your PR title for a better release log, e.g. fix: update entities encoding/decoding (fix #3899).
    • Provide detailed description of the bug in the PR, or link to an issue that does.

Development Guide

NOTE: ESLint React is undergoing rapid development right now, and the docs may not reflect the current state of ESLint React. We are working hard to improve it.

Packages Overview

  • @eslint-react/tools: Std library and primitives.
  • @eslint-react/types: Type definitions.
  • @eslint-react/shared: Shared constants and functions.
  • @eslint-react/ast: TSESTree AST primitive utility module.
  • @eslint-react/var: TSESTree AST utility module for static analysis of variables.
  • @eslint-react/jsx: TSESTree AST utility module for static analysis of JSX.
  • @eslint-react/core: ESLint utility module for static analysis of React core APIs and Patterns.
  • eslint-plugin-react-x: The standalone ESLint plugin of React core rules.
  • eslint-plugin-react-dom: The standalone ESLint plugin of React DOM rules.
  • eslint-plugin-react-web-api - The standalone ESLint plugin of Web API rules.
  • eslint-plugin-react-hooks-extra: The standalone ESLint plugin of extra React Hooks rules.
  • eslint-plugin-react-naming-convention: The standalone ESLint plugin of React naming convention rules.
  • @eslint-react/eslint-plugin: The main ESLint plugin of ESLint React. Contains all the rules from the above plugins.

Developing Documentation

  • The public documentation is written in MarkdownReact (MDX) and is located in the website/pages/docs folder.
  • Internal packages are documented using TypeDoc. You can find the documentation for each package in the docs folder of the package.

Developing Rules

Developing Core and Related Components

  • TODO: Add more info here

Building the documentation locally

You can build the TypeDoc documentation locally running the following script:

pnpm run build:docs