Find and fix problems in your JavaScript code.

Overview

npm version Downloads Build Status FOSSA Status
Open Collective Backers Open Collective Sponsors Follow us on Twitter

ESLint

Website | Configuring | Rules | Contributing | Reporting Bugs | Code of Conduct | Twitter | Mailing List | Chat Room

ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code. In many ways, it is similar to JSLint and JSHint with a few exceptions:

  • ESLint uses Espree for JavaScript parsing.
  • ESLint uses an AST to evaluate patterns in code.
  • ESLint is completely pluggable, every single rule is a plugin and you can add more at runtime.

Table of Contents

  1. Installation and Usage
  2. Configuration
  3. Code of Conduct
  4. Filing Issues
  5. Frequently Asked Questions
  6. Releases
  7. Security Policy
  8. Semantic Versioning Policy
  9. Stylistic Rule Updates
  10. License
  11. Team
  12. Sponsors
  13. Technology Sponsors

Installation and Usage

Prerequisites: Node.js (^10.12.0, or >=12.0.0) built with SSL support. (If you are using an official Node.js distribution, SSL is always built in.)

You can install ESLint using npm:

$ npm install eslint --save-dev

You should then set up a configuration file:

$ ./node_modules/.bin/eslint --init

After that, you can run ESLint on any file or directory like this:

$ ./node_modules/.bin/eslint yourfile.js

Configuration

After running eslint --init, you'll have a .eslintrc file in your directory. In it, you'll see some rules configured like this:

{
    "rules": {
        "semi": ["error", "always"],
        "quotes": ["error", "double"]
    }
}

The names "semi" and "quotes" are the names of rules in ESLint. The first value is the error level of the rule and can be one of these values:

  • "off" or 0 - turn the rule off
  • "warn" or 1 - turn the rule on as a warning (doesn't affect exit code)
  • "error" or 2 - turn the rule on as an error (exit code will be 1)

The three error levels allow you fine-grained control over how ESLint applies rules (for more configuration options and details, see the configuration docs).

Code of Conduct

ESLint adheres to the JS Foundation Code of Conduct.

Filing Issues

Before filing an issue, please be sure to read the guidelines for what you're reporting:

Frequently Asked Questions

I'm using JSCS, should I migrate to ESLint?

Yes. JSCS has reached end of life and is no longer supported.

We have prepared a migration guide to help you convert your JSCS settings to an ESLint configuration.

We are now at or near 100% compatibility with JSCS. If you try ESLint and believe we are not yet compatible with a JSCS rule/configuration, please create an issue (mentioning that it is a JSCS compatibility issue) and we will evaluate it as per our normal process.

Does Prettier replace ESLint?

No, ESLint does both traditional linting (looking for problematic patterns) and style checking (enforcement of conventions). You can use ESLint for everything, or you can combine both using Prettier to format your code and ESLint to catch possible errors.

Why can't ESLint find my plugins?

  • Make sure your plugins (and ESLint) are both in your project's package.json as devDependencies (or dependencies, if your project uses ESLint at runtime).
  • Make sure you have run npm install and all your dependencies are installed.
  • Make sure your plugins' peerDependencies have been installed as well. You can use npm view eslint-plugin-myplugin peerDependencies to see what peer dependencies eslint-plugin-myplugin has.

Does ESLint support JSX?

Yes, ESLint natively supports parsing JSX syntax (this must be enabled in configuration). Please note that supporting JSX syntax is not the same as supporting React. React applies specific semantics to JSX syntax that ESLint doesn't recognize. We recommend using eslint-plugin-react if you are using React and want React semantics.

What ECMAScript versions does ESLint support?

ESLint has full support for ECMAScript 3, 5 (default), 2015, 2016, 2017, 2018, 2019, and 2020. You can set your desired ECMAScript syntax (and other settings, like global variables or your target environments) through configuration.

What about experimental features?

ESLint's parser only officially supports the latest final ECMAScript standard. We will make changes to core rules in order to avoid crashes on stage 3 ECMAScript syntax proposals (as long as they are implemented using the correct experimental ESTree syntax). We may make changes to core rules to better work with language extensions (such as JSX, Flow, and TypeScript) on a case-by-case basis.

In other cases (including if rules need to warn on more or fewer cases due to new syntax, rather than just not crashing), we recommend you use other parsers and/or rule plugins. If you are using Babel, you can use the babel-eslint parser and eslint-plugin-babel to use any option available in Babel.

Once a language feature has been adopted into the ECMAScript standard (stage 4 according to the TC39 process), we will accept issues and pull requests related to the new feature, subject to our contributing guidelines. Until then, please use the appropriate parser and plugin(s) for your experimental feature.

Where to ask for help?

Join our Mailing List or Chatroom.

Why doesn't ESLint lock dependency versions?

Lock files like package-lock.json are helpful for deployed applications. They ensure that dependencies are consistent between environments and across deployments.

Packages like eslint that get published to the npm registry do not include lock files. npm install eslint as a user will respect version constraints in ESLint's package.json. ESLint and its dependencies will be included in the user's lock file if one exists, but ESLint's own lock file would not be used.

We intentionally don't lock dependency versions so that we have the latest compatible dependency versions in development and CI that our users get when installing ESLint in a project.

The Twilio blog has a deeper dive to learn more.

Releases

We have scheduled releases every two weeks on Friday or Saturday. You can follow a release issue for updates about the scheduling of any particular release.

Security Policy

ESLint takes security seriously. We work hard to ensure that ESLint is safe for everyone and that security issues are addressed quickly and responsibly. Read the full security policy.

Semantic Versioning Policy

ESLint follows semantic versioning. However, due to the nature of ESLint as a code quality tool, it's not always clear when a minor or major version bump occurs. To help clarify this for everyone, we've defined the following semantic versioning policy for ESLint:

  • Patch release (intended to not break your lint build)
    • A bug fix in a rule that results in ESLint reporting fewer linting errors.
    • A bug fix to the CLI or core (including formatters).
    • Improvements to documentation.
    • Non-user-facing changes such as refactoring code, adding, deleting, or modifying tests, and increasing test coverage.
    • Re-releasing after a failed release (i.e., publishing a release that doesn't work for anyone).
  • Minor release (might break your lint build)
    • A bug fix in a rule that results in ESLint reporting more linting errors.
    • A new rule is created.
    • A new option to an existing rule that does not result in ESLint reporting more linting errors by default.
    • A new addition to an existing rule to support a newly-added language feature (within the last 12 months) that will result in ESLint reporting more linting errors by default.
    • An existing rule is deprecated.
    • A new CLI capability is created.
    • New capabilities to the public API are added (new classes, new methods, new arguments to existing methods, etc.).
    • A new formatter is created.
    • eslint:recommended is updated and will result in strictly fewer linting errors (e.g., rule removals).
  • Major release (likely to break your lint build)
    • eslint:recommended is updated and may result in new linting errors (e.g., rule additions, most rule option updates).
    • A new option to an existing rule that results in ESLint reporting more linting errors by default.
    • An existing formatter is removed.
    • Part of the public API is removed or changed in an incompatible way. The public API includes:
      • Rule schemas
      • Configuration schema
      • Command-line options
      • Node.js API
      • Rule, formatter, parser, plugin APIs

According to our policy, any minor update may report more linting errors than the previous release (ex: from a bug fix). As such, we recommend using the tilde (~) in package.json e.g. "eslint": "~3.1.0" to guarantee the results of your builds.

Stylistic Rule Updates

Stylistic rules are frozen according to our policy on how we evaluate new rules and rule changes. This means:

  • Bug fixes: We will still fix bugs in stylistic rules.
  • New ECMAScript features: We will also make sure stylistic rules are compatible with new ECMAScript features.
  • New options: We will not add any new options to stylistic rules unless an option is the only way to fix a bug or support a newly-added ECMAScript feature.

License

FOSSA Status

Team

These folks keep the project moving and are resources for help.

Technical Steering Committee (TSC)

The people who manage releases, review feature requests, and meet regularly to ensure ESLint is properly maintained.


Nicholas C. Zakas

Brandon Mills

Toru Nagashima

Milos Djermanovic

Reviewers

The people who review and implement new features.


Toru Nagashima

薛定谔的猫

Committers

The people who review and fix bugs and help triage issues.


Pig Fang

Anix

YeonJuan

Sponsors

The following companies, organizations, and individuals support ESLint's ongoing maintenance and development. Become a Sponsor to get your logo on our README and website.

Platinum Sponsors

Automattic

Gold Sponsors

Nx (by Nrwl) Chrome's Web Framework & Tools Performance Fund Salesforce Airbnb Microsoft Substack

Silver Sponsors

Retool Liftoff

Bronze Sponsors

Buy.Fineproxy.Org Anagram Solver Bugsnag Stability Monitoring Mixpanel VPS Server Icons8: free icons, photos, illustrations, and music Discord ThemeIsle Fire Stick Tricks

Technology Sponsors

Comments
  • Support having plugins as dependencies in shareable config

    Support having plugins as dependencies in shareable config

    My shareable config uses rules from an external plugin and I would like to make it a dependency so the user doesn't have to manually install the plugin manually. I couldn't find any docs on this, but it doesn't seem to work, so I'll assume it's not currently supported.

    module.js:338
        throw err;
              ^
    Error: Cannot find module 'eslint-plugin-no-use-extend-native'
        at Function.Module._resolveFilename (module.js:336:15)
        at Function.Module._load (module.js:278:25)
        at Module.require (module.js:365:17)
        at require (module.js:384:17)
        at /usr/local/lib/node_modules/eslint/lib/cli-engine.js:106:26
        at Array.forEach (native)
        at loadPlugins (/usr/local/lib/node_modules/eslint/lib/cli-engine.js:97:21)
        at processText (/usr/local/lib/node_modules/eslint/lib/cli-engine.js:182:5)
        at processFile (/usr/local/lib/node_modules/eslint/lib/cli-engine.js:224:12)
        at /usr/local/lib/node_modules/eslint/lib/cli-engine.js:391:26
    

    I assume it's because you only try to load the plugin when the config is finished merging.

    Other shareable configs that depend on a plugin instructs the users to manually install the plugin too and they have it in peerDependencies. I find this sub-optimal though and I don't want the users to have to care what plugins my config uses internally.

    The whole point of shareable configs is to minimize boilerplate and overhead, so this would be a welcome improvement.

    Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

    backlog core needs bikeshedding evaluating 
    opened by sindresorhus 208
  • Investigate switching away from GitHub

    Investigate switching away from GitHub

    As ESLint has continued to grow, we've started to outgrow the GitHub ecosystem. Team members spend hours each day triaging issues, many of which have incomplete information or are otherwise unclear. As such, we spend a lot of time just asking for more information ("what do you mean?", "what version are you using?", etc.). This has become increasingly frustrating for everyone on the team and ultimately takes time away from being able to contribute code to the project.

    Additionally, it's nearly impossible to keep up with what are the most important issues and whether or not people are following up on issues. In short, everything that Dear GitHub mentioned is severely hurting the team now. As ESLint's popularity continues to grow and there are more and more issues filed, this is quickly becoming a scalability problem.

    The team has discussed investigating alternatives to GitHub to see if we can find a home that is better suited to open source projects with our level of scale. We strongly feel that the code and issue tracker need to live in the same location to make it easier to manage and give people one location to visit for all of their ESLint-related needs (so simply moving to a different issue tracker and keeping the code on GitHub is not an alternative).

    Requirements

    • Must host the repo along with the related tools
    • Must be able to run automated tests on pull requests
    • Must allow contributions from anyone
    • Must have a way to setup issue templates prescribing what fields are required
    • Must have ways to organize issues other than labeling (milestones, priorities, etc.)
    • Must import existing GitHub issues and pull requests

    Alternatives to Investigate

    1. GitLab
    2. Phabricator

    Concerns

    1. Will people find us in another location?
    2. How high is the barrier to entry for new contributors if we're not on GitHub?
    3. What about the Gitter chatroom? What happens to that? Do we need to find another chat location?
    4. Others?
    infrastructure needs bikeshedding evaluating 
    opened by nzakas 170
  • add outer padding to rule padded-blocks and cover existing jscs functionality

    add outer padding to rule padded-blocks and cover existing jscs functionality

    Update: please refer to this pull request for the current status of this issue:

    https://github.com/eslint/eslint/pull/8099

    1st proposal: updating padded-blocks

    {
      inner: "always" | "never" | "before" | "after"
      outer: "always" | "never" | "before" | "after"
      prefer: "inner" | "outer"
      outerExceptions: "inCallExpressions" | "inNewExpressions" | "inArrayExpressions" | "inProperties" | "singleLine"
      innerExceptions: "blocks" | "classes" | "switches"
    }
    

    The above doesn't yet include additional options for backwards compatibility.

    related issues:

    • https://github.com/eslint/eslint/issues/3092
    • https://github.com/eslint/eslint/issues/5982
    • https://github.com/eslint/eslint/issues/5949

    related / converging rules:

    • http://jscs.info/rule/requirePaddingNewLinesAfterBlocks.html
    • http://eslint.org/docs/rules/padded-blocks
    • I think jscs has another rule for padding before blocks?

    ~~2nd proposal~~

    ~~no modifications to padded-blocks. new rule that has exceptions to allow padded-blocks to work, if there is a conflict an error is thrown (is this even a thing?)~~

    "padding-around-blocks": true | "before" | "after", {
      "exceptions": "inCallExpressions" | "inNewExpressions" | 
                    "inArrayExpressions" | "inProperties" | "singleLine" | 
                    "afterOpeningBlock" | "beforeEndingBlock"
    }
    

    ~~"afterOpeningBlock" and "beforeEndingBlock" specify whether the rule should apply to a block placed at the beginning or end of the inside of another block. If they are both specified, then padded-blocks should work as expected. If they are not specified, then the new rule could potentially result in an error depending how padded-blocks is configured.~~

    enhancement rule accepted archived due to age 
    opened by quinn 120
  • New: Create ESLint configuration from project files

    New: Create ESLint configuration from project files

    This PR is intended to provide an easy way to begin using ESLint on a non-linted project in a meaningful way. It will provide automatic creation of an ESLint configuration file based on the project files which will not result in linting errors when run against the project.

    TODO:

    • [X] Logic to create valid configurations for each core rule
    • [x] Revisions to --init to ask user if they want to inspect their project files, and then ask which file(s) to inspect
    • [x] Logic to repeatedly lint project files with sets of configurations to determine which rules can be enabled without erroring
    • [x] Warning message for long execution
    • [x] Extend eslint:recommended
    • [x] Tests
    • [x] Docs

    Future Improvements:

    • Autoconfigure React plugin rules
    • Set rules to warn if only a few errors
    archived due to age 
    opened by IanVS 88
  • Glob based configuration

    Glob based configuration

    Glob based configuration

    Goal

    Currently ESLint allows you to cascade the configurations based on the directory structure of your project. This approach is not flexible enough if you have files that don’t share the same parent directory but you still want to have a specific ESLint configuration just for those files. This could be solved by specifying a configuration that applies to all files which match a given glob pattern.

    How it works

    • The glob patterns can be configured within .eslintrc files
    • glob patterns are relative to the location of the .eslintrc in which they are defined
    • if an already resolved file matches a glob pattern in one of its corresponding .eslintrc files, the glob pattern specific configuration will be applied
    • a glob pattern based configuration has a higher precedence than the regular configuration in the same .eslintrc file
    • A glob specific configuration works exactly the same as the regular configuration in your .eslintrc, except that you can’t define nested glob based configurations. That means you can configure globals, env, ecmaFeatures, rules, plugins, extends and parser.

    Note: The glob patterns are NOT used for file resolving / directory traversal.

    Example for relative glob patterns

    Given the following directory tree:

    project-root
    ├── app
    │   ├── lib
    │   │   ├── foo.js
    │   │   ├── fooSpec.js
    │   ├── components
    │   │   ├── bar.js
    │   │   ├── barSpec.js
    │   ├── .eslintrc
    ├── server
    │   ├── server.js
    │   ├── serverSpec.js
    ├── .eslintrc
    

    The config in app/.eslintrc defines the glob pattern **/*Spec.js. This pattern is relative to the base directory of app/.eslintrc. So, this pattern would match app/lib/fooSpec.js and app/components/barSpec.js but NOT server/serverSpec.js. If you would define the same pattern in the .eslintrc file within in the project-root folder, it would match all three of the *Spec files.

    Configuration Examples

    Single pattern

    {
      "files": [
        {
          "patterns": "**/*Spec.js",
          "rules": { "no-unused-expression": 0 },
          "env": { "mocha": true } 
        }
      ] 
    } 
    

    Multiple patterns

    {
      "files": [
        {
          "patterns": [ "app/components/**/*.js", "test/unit/app/components/**/*.js" ],
          "rules": { "react/display-name": 2 },
          "ecmaFeatures": { "jsx": true },
          "plugins": [ "react" ] 
        }
      ] 
    } 
    

    As you can see patterns could be a string for a single glob pattern or an array if you like to define multiple patterns.

    Open Questions / Possible Problems

    • Should we allow patterns in shareable configs? To which base path should the relative glob pattern be resolved? I think we should not allow this. Extending from a shareable config should mean that you unconditionally get the rules from this shareable configuration for all the files that you configure it in your project
    • Should this feature also work somehow for the CLIEngine?

    PS: I’m not happy with the current naming of "files" and "patterns". Suggestions welcome

    Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

    core accepted feature archived due to age 
    opened by lo1tuma 87
  • Investigate supporting ES6/JSX

    Investigate supporting ES6/JSX

    After many requests and some soul-searching, I've come around to believing that ESLint should optionally support JSX. My rationale is based on:

    1. The growing popularity of React/JSX
    2. The existence of Esprima-FB and estraverse-FB

    There is still the issue of escope not supporting es6 scoping rules and relying on estraverse directly, but that may be solvable.

    The way I'm envisioning this working is by allowing you to specify one of four JavaScript modes:

    1. ECMAScript 3
    2. ECMAScript 5
    3. ECMAScript 6
    4. JSX

    That means ECMAScript 6 support is separate from JSX support. You opt-in to JSX, you get whatever is in Esprima-FB vs. opting in to ES6, which should not support JSX syntax.

    This issue is to gather investigation data to determine how this can be achieved and what blockers might exist.

    enhancement core accepted needs bikeshedding 
    opened by nzakas 86
  • ESLint 2.0.0 Wish List [$10]

    ESLint 2.0.0 Wish List [$10]

    As we are getting closer and closer to v1.0.0, it's time to start thinking about what a v2.0.0 would look like. Here are the things that have either come up recently or have been on my mind:

    • Autofix option - This has come up at least three times as a request. Originally I was pretty against it, but I'm starting to warm up to the idea. The idea is optionally fix certain types of issues instead of just reporting them. While this won't be possible for 100% of the rules, even a small percentage could make a big difference.
    • Autocreate config by looking at code - We need a way to make it easier to get started. Manually configuring over 100 rules is a painful process. It would be nice to be able to give ESLint a file and say "create me a config that matches the styles in this file".

    What other ideas do you have about big things we could tackle for 2.0.0?

    Did you help close this issue? Go claim the $10 bounty on Bountysource.

    bounty archived due to age 
    opened by nzakas 84
  • More options for padded-blocks

    More options for padded-blocks

    It would be cool to have something similar to JSCS's http://jscs.info/rule/requirePaddingNewLinesAfterBlocks.html

    Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

    enhancement rule feature evaluating archived due to age 
    opened by okonet 76
  • Future wish list

    Future wish list

    We are almost ready to release 2.0.0, and as such, it's time to start thinking about 3.0.0. As usual, the goal of this issue is to gather feedback on important changes that would be breaking or ambitious. (Other suggestions can just be filed as an issue.)

    We are already looking at dropping support for Node < 4 in 3.0.0.

    One thing I'd like to hear is ideas for how can ESLint better support TypeScript and Flow.

    Note: keep the suggestions as high-level descriptions. This is a brainstorming exercise, we don't want to get into implementation details or plausibility discussions. Let's just see what ideas people have. The best will be explored further.

    Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

    needs bikeshedding evaluating archived due to age 
    opened by nzakas 73
  • Update: added operator-specific options to space-infix-ops rule

    Update: added operator-specific options to space-infix-ops rule

    What is the purpose of this pull request? (put an "X" next to item)

    [ ] Documentation update [ ] Bug fix (template) [ ] New rule (template) [X] Changes an existing rule (template) [ ] Add autofixing to a rule [ ] Add a CLI option [ ] Add something to the core [ ] Other, please explain:

    What rule do you want to change? space-infix-ops

    Does this change cause the rule to produce more or fewer warnings? fewer; With the new option, "x**2" would not generate a warning.

    How will the change be implemented? (New option, new default behavior, etc.)? new option

    Please provide some example code that this change will affect:

    <!-- example code here -->
    x**2
    

    What does the rule currently do for this code? The rule currently reports that spaces are required around the ** operator.

    What will the rule do after it's changed? The rule will no longer complain about this if the noExpSpace option is used. I'm definitely not tied to this option name. Feel free to suggest a better one.

    What changes did you make? (Give an overview) I added the noExpSpace to the space-infix-ops rule to allow opting out of adding space around the ** operator. This is desirable because most people are used to not having space around the exponentiation operator when writing mathematical expressions. This does not change the default behavior of this rule.

    Is there anything you'd like reviewers to focus on? No.

    enhancement rule accepted archived due to age 
    opened by mvolkmann 72
  • Fix: clone config before validating (fixes #12592)

    Fix: clone config before validating (fixes #12592)

    Prerequisites checklist

    • [X] I have read the contributing guidelines.
    • [X] The team has reached consensus on the changes proposed in this pull request. If not, I understand that the evaluation process will begin with this pull request and won't be merged until the team has reached consensus.

    What is the purpose of this pull request? (put an "X" next to an item)

    [ ] Documentation update [X] Bug fix (template) [ ] New rule (template) [ ] Changes an existing rule (template) [ ] Add autofixing to a rule [ ] Add a CLI option [ ] Add something to the core [ ] Other, please explain:

    What changes did you make? (Give an overview)

    Cloning the rule config and other configs before validating them as they get mutated with default values when used useDefault : true in agv. I couldn't find any other entry point for this issue other than this, do let me know if any!

    Is there anything you'd like reviewers to focus on?

    fixes https://github.com/eslint/eslint/issues/12592

    bug core accepted archived due to age 
    opened by anikethsaha 69
  • chore: simplify PR template documentation

    chore: simplify PR template documentation

    Prerequisites checklist

    What is the purpose of this pull request? (put an "X" next to an item)

    [x] Documentation update [ ] Bug fix (template) [ ] New rule (template) [ ] Changes an existing rule (template) [ ] Add autofix to a rule [ ] Add a CLI option [ ] Add something to the core [ ] Other, please explain:

    What changes did you make? (Give an overview)

    The issue templates are essentially more advanced versions of the ones that were being (redundantly) maintained in the templates directory. Used relative paths instead instead of hardcoding eslint/eslint/HEAD because that makes it easier to review a branch that makes any direct changes to the referenced documentation files within a file like this one.

    Is there anything you'd like reviewers to focus on?

    N/A

    documentation evaluating chore 
    opened by gfyoung 6
  • fix: ignore directives for no-fallthrough

    fix: ignore directives for no-fallthrough

    Prerequisites checklist

    What is the purpose of this pull request? (put an "X" next to an item)

    [ ] Documentation update [x] Bug fix (template) [ ] New rule (template) [ ] Changes an existing rule (template) [ ] Add autofix to a rule [ ] Add a CLI option [ ] Add something to the core [ ] Other, please explain:

    Fixes https://github.com/eslint/eslint/issues/16650

    What changes did you make? (Give an overview)

    Fallthrough comment pattern detection was incorrectly matching to ESLint directives.

    Abstracts logic from main linter.js file to detect directives. That detection now takes precedence over fallthrough comment pattern detection, regardless of whether the default pattern or user-provided pattern is used.

    Is there anything you'd like reviewers to focus on?

    N/A

    bug rule accepted 
    opened by gfyoung 2
  • Mentioning eslint-disable-line

    Mentioning eslint-disable-line

    I expected to find eslint-disable-line mentioned on this page and I noticed that eslint-disable-line is never explicitly documented from what I could find (although it's noted in numerous examples). I think it would be helpful to mention it on this page which discusses how to ignore code. Thanks!

    Prerequisites checklist

    What is the purpose of this pull request? (put an "X" next to an item)

    [ ] Documentation update [ ] Bug fix (template) [ ] New rule (template) [ ] Changes an existing rule (template) [ ] Add autofix to a rule [ ] Add a CLI option [ ] Add something to the core [ ] Other, please explain:

    What changes did you make? (Give an overview)

    Is there anything you'd like reviewers to focus on?

    triage 
    opened by fhightower 5
  • Change Request: Introduce a system to suppress existing errors

    Change Request: Introduce a system to suppress existing errors

    ESLint version

    v8.31.0

    What problem do you want to solve?

    I would like there to be a system to suppress existing errors from being reported, so that I can enable a rule as "error" and be notified when new ones show up.

    I believe that the way that this is done today with ESLint and many other linters is through different imperfect means.

    Using warnings

    This use-case is apparently what the "warn" severity level is for.

    A large problem with warnings is that as soon as there are more than a few warnings, you don't notice new ones showing up. A common practice I've seen quite often is to avoid warnings altogether, and to only use errors to avoid new problems creeping in. But that doesn't solve the problem of all the existing errors.

    Also, users can too easily ignore the new errors, so in a way, the rule is enabled without being enforced when IMO the point of a linter is to enforce rules.

    Using disable comments

    One can use disable comments to temporarily suppress errors, by adding a comment like // eslint-disable rule-name -- FIX THIS LATER

    Disable comments can be used to enable a rule as an error early, by adding them everywhere where an error is currently reported (and that is actually something that can be automated by some linters).

    But disable comments have the tendency to be hard to distinguish from other disable comments created for reasons such as false positives or disagreements on the rule, especially when there is no enforced need to add a message on the comment. Meaning that once you decide to tackle the existing errors, they can be hard to detect (or to distinguish from ones that are disabled for good reasons).

    They also "pollute" the codebase in a way that is quite visible, and makes users numb to the fact of using disable comments.

    Ignoring parts of the project

    It is also possible to simply disable the rule in each file that is currently reporting errors, either through manually configuring the rule in the ESLint config, or by adding a disable comment at the top of the file that disables the rule for the entire file.

    This has multiple downsides:

    • While new errors are enforced in the other files, new errors can creep in the ignored files
    • If/when the errors in the ignored files get removed, the user has to remember to re-enable the rule on this file. Otherwise new errors can creep in also.

    What do you think is the correct solution?

    Here is some prior art on suppressing existing errors:

    I am the author of the linter and blog post mentioned in the first bullet point. My recommendation would be to create a similar system to this one. It has worked really well so far for my users and I. The blog post also describes the problems I've mentioned in greater detail than in this issue.

    I am not willing to submit a PR nor a RFC as I am not using ESLint anymore and this would be a large endeavor, but I'd be happy to give advice and recommendations on how such a system should be put in place.

    Participation

    • [ ] I am willing to submit a pull request for this change.

    Additional comments

    No response

    enhancement triage core 
    opened by jfmengels 0
  • Change Request: Give advice on when to use disable comments

    Change Request: Give advice on when to use disable comments

    ESLint version

    v8.31.0

    What problem do you want to solve?

    The ESLint docs have a large section on how to use comments to disable ESLint errors like // eslint-disable rule-name.

    For all the "how" that this section provides, it doesn't explain in which situations or for what reasons to use disable comments.

    Without this guidance, disable comments are being used and often abused, as I imagine you have seen in practice yourselves. For instance, someone disagreeing with an important rule that has been added and adding a disable comment. Or someone not understanding an issue and ignoring it because that's the easy way out. Or someone adding a disable comment to fix the issue later but never ending up doing it.

    What do you think is the correct solution?

    I think that it is important to teach or guide users into using the tool properly. As maintainers of the tool, I believe that you are best placed to explain how to use the feature properly.

    Giving some advice in this section, ideally at the beginning (before explaining how) sounds like the proper solution in my opinion.

    As to what advice to write, I don't know. I am myself against this feature in general, as I have previously written, and as such have not enabled this feature in my own linter.

    As I don't know what to write, I am not willing to submit a pull request. I don't think I am best suited to answer this question.

    Participation

    • [ ] I am willing to submit a pull request for this change.

    Additional comments

    No response

    enhancement triage core 
    opened by jfmengels 0
  • docs: Give advice on when to use warn

    docs: Give advice on when to use warn

    Prerequisites checklist

    What is the purpose of this pull request? (put an "X" next to an item)

    [X] Documentation update [ ] Bug fix (template) [ ] New rule (template) [ ] Changes an existing rule (template) [ ] Add autofix to a rule [ ] Add a CLI option [ ] Add something to the core [ ] Other, please explain:

    What changes did you make? (Give an overview)

    I added an explanation of when to use the "warn" severity, as I often feel like it's being misused and misunderstood. I asked what they were used for in this Twitter thread and @nzakas replied

    Warnings were designed to aid in transitioning to using new rules. Mark as a warning to let people know this rule will become an error in the future without breaking the build now. It’s intended as a temporary measure.

    which I used as the basis of the explanation.

    Is there anything you'd like reviewers to focus on?

    I have been using and contributing to ESLint and linters for years, and had never known that this was the intent behind them. I imagine this will actually surprise people. I for a long time thought it was about more or less important rules.

    I don't necessarily agree that warnings are a good use for this considering that it will easily lead a large wall of errors, which is why I have added some advice on keeping the number of these issues low.

    I think it's important to give good advice here so I'm open to suggestions to improve the message.

    documentation evaluating 
    opened by jfmengels 3
Releases(v8.31.0)
  • v8.31.0(Dec 31, 2022)

    Features

    • 52c7c73 feat: check assignment patterns in no-underscore-dangle (#16693) (Milos Djermanovic)
    • b401cde feat: add options to check destructuring in no-underscore-dangle (#16006) (Morten Kaltoft)
    • 30d0daf feat: group properties with values in parentheses in key-spacing (#16677) (Francesco Trotta)

    Bug Fixes

    • 35439f1 fix: correct syntax error in prefer-arrow-callback autofix (#16722) (Francesco Trotta)
    • 87b2470 fix: new instance of FlatESLint should load latest config file version (#16608) (Milos Djermanovic)

    Documentation

    • 4339dc4 docs: Update README (GitHub Actions Bot)
    • 4e4049c docs: optimize code block structure (#16669) (Sam Chen)
    • 54a7ade docs: do not escape code blocks of formatters examples (#16719) (Sam Chen)
    • e5ecfef docs: Add function call example for no-undefined (#16712) (Elliot Huffman)
    • a3262f0 docs: Add mastodon link (#16638) (Amaresh S M)
    • a14ccf9 docs: clarify files property (#16709) (Sam Chen)
    • 3b29eb1 docs: fix npm link (#16710) (Abdullah Osama)
    • a638673 docs: fix search bar focus on Esc (#16700) (Shanmughapriyan S)
    • f62b722 docs: country flag missing in windows (#16698) (Shanmughapriyan S)
    • 4d27ec6 docs: display zh-hans in the docs language switcher (#16686) (Percy Ma)
    • 8bda20e docs: remove manually maintained anchors (#16685) (Percy Ma)
    • b68440f docs: User Guide Getting Started expansion (#16596) (Ben Perlmutter)

    Chores

    • 65d4e24 chore: Upgrade @eslint/[email protected] (#16729) (Brandon Mills)
    • 8d93081 chore: fix CI failure (#16721) (Sam Chen)
    • 8f17247 chore: Set up automatic updating of README (#16717) (Nicholas C. Zakas)
    • 4cd87cb ci: bump actions/stale from 6 to 7 (#16713) (dependabot[bot])
    • fd20c75 chore: sort package.json scripts in alphabetical order (#16705) (Darius Dzien)
    • 10a5c78 chore: update ignore patterns in eslint.config.js (#16678) (Milos Djermanovic)
    Source code(tar.gz)
    Source code(zip)
  • v8.30.0(Dec 16, 2022)

    Features

    • 075ef2c feat: add suggestion for no-return-await (#16637) (Daniel Bartholomae)
    • 7190d98 feat: update globals (#16654) (Sébastien Règne)

    Bug Fixes

    • 1a327aa fix: Ensure flat config unignores work consistently like eslintrc (#16579) (Nicholas C. Zakas)
    • 9b8bb72 fix: autofix recursive functions in no-var (#16611) (Milos Djermanovic)

    Documentation

    • 6a8cd94 docs: Clarify Discord info in issue template config (#16663) (Nicholas C. Zakas)
    • ad44344 docs: CLI documentation standardization (#16563) (Ben Perlmutter)
    • 293573e docs: fix broken line numbers (#16606) (Sam Chen)
    • fa2c64b docs: use relative links for internal links (#16631) (Percy Ma)
    • 75276c9 docs: reorder options in no-unused-vars (#16625) (Milos Djermanovic)
    • 7276fe5 docs: Fix anchor in URL (#16628) (Karl Horky)
    • 6bef135 docs: don't apply layouts to html formatter example (#16591) (Tanuj Kanti)
    • dfc7ec1 docs: Formatters page updates (#16566) (Ben Perlmutter)
    • 8ba124c docs: update the prefer-const example (#16607) (Pavel)
    • e6cb05a docs: fix css leaking (#16603) (Sam Chen)

    Chores

    • f2c4737 chore: upgrade @eslint/[email protected] (#16675) (Milos Djermanovic)
    • ba74253 chore: standardize npm script names per #14827 (#16315) (Patrick McElhaney)
    • 0d9af4c ci: fix npm v9 problem with file: (#16664) (Milos Djermanovic)
    • 90c9219 refactor: migrate off deprecated function-style rules in all tests (#16618) (Bryan Mishkin)
    Source code(tar.gz)
    Source code(zip)
  • v8.29.0(Dec 2, 2022)

    Features

    • 49a07c5 feat: add allowParensAfterCommentPattern option to no-extra-parens (#16561) (Nitin Kumar)
    • e6a865d feat: prefer-named-capture-group add suggestions (#16544) (Josh Goldberg)
    • a91332b feat: In no-invalid-regexp validate flags also for non-literal patterns (#16583) (trosos)

    Documentation

    • 0311d81 docs: Configuring Plugins page intro, page tweaks, and rename (#16534) (Ben Perlmutter)
    • 57089b1 docs: add a property assignment example for camelcase rule (#16605) (Milos Djermanovic)
    • b6ab030 docs: add docs codeowners (#16601) (Strek)
    • 6380c87 docs: fix sitemap and feed (#16592) (Milos Djermanovic)
    • ade621d docs: perf debounce the search query (#16586) (Shanmughapriyan S)
    • fbcf3ab docs: fix searchbar clear button (#16585) (Shanmughapriyan S)
    • f894035 docs: HTTPS link to yeoman.io (#16582) (Christian Oliff)
    • de12b26 docs: Update configuration file pages (#16509) (Ben Perlmutter)
    • 1ae9f20 docs: update correct code examples for no-extra-parens rule (#16560) (Nitin Kumar)

    Chores

    • 7628403 chore: add discord channel link (#16590) (Amaresh S M)
    • f5808cb chore: fix rule doc headers check (#16564) (Milos Djermanovic)
    Source code(tar.gz)
    Source code(zip)
  • v8.28.0(Nov 18, 2022)

    Features

    • 63bce44 feat: add ignoreClassFieldInitialValues option to no-magic-numbers (#16539) (Milos Djermanovic)
    • 8385ecd feat: multiline properties in rule key-spacing with option align (#16532) (Francesco Trotta)
    • a4e89db feat: no-obj-calls support Intl (#16543) (Sosuke Suzuki)

    Bug Fixes

    • c50ae4f fix: Ensure that dot files are found with globs. (#16550) (Nicholas C. Zakas)
    • 9432b67 fix: throw error for first unmatched pattern (#16533) (Milos Djermanovic)
    • e76c382 fix: allow * 1 when followed by / in no-implicit-coercion (#16522) (Milos Djermanovic)

    Documentation

    • 34c05a7 docs: Language Options page intro and tweaks (#16511) (Ben Perlmutter)
    • 3e66387 docs: add intro and edit ignoring files page (#16510) (Ben Perlmutter)
    • 436f712 docs: fix Header UI inconsistency (#16464) (Tanuj Kanti)
    • f743816 docs: switch to wrench emoji for auto-fixable rules (#16545) (Bryan Mishkin)
    • bc0547e docs: improve styles for versions and languages page (#16553) (Nitin Kumar)
    • 6070f58 docs: clarify esquery issue workaround (#16556) (Milos Djermanovic)
    • b48e4f8 docs: Command Line Interface intro and tweaks (#16535) (Ben Perlmutter)
    • b92b30f docs: Add Rules page intro and content tweaks (#16523) (Ben Perlmutter)
    • 1769b42 docs: Integrations page introduction (#16548) (Ben Perlmutter)
    • a8d0a57 docs: make table of contents sticky on desktop (#16506) (Sam Chen)
    • a01315a docs: fix route of japanese translation site (#16542) (Tanuj Kanti)
    • 0515628 docs: use emoji instead of svg for deprecated rule (#16536) (Bryan Mishkin)
    • 68f1288 docs: set default layouts (#16484) (Percy Ma)
    • 776827a docs: init config about specifying shared configs (#16483) (Percy Ma)
    • 5c39425 docs: fix broken link to plugins (#16520) (Ádám T. Nagy)
    • c97c789 docs: Add missing no-new-native-nonconstructor docs code fence (#16503) (Brandon Mills)

    Chores

    • e94a4a9 chore: Add tests to verify #16038 is fixed (#16538) (Nicholas C. Zakas)
    • e13f194 chore: stricter validation of meta.docs.description in core rules (#16529) (Milos Djermanovic)
    • 72dbfbc chore: use pkg parameter in getNpmPackageVersion (#16525) (webxmsj)
    Source code(tar.gz)
    Source code(zip)
  • v8.27.0(Nov 6, 2022)

    Features

    • f14587c feat: new no-new-native-nonconstructor rule (#16368) (Sosuke Suzuki)
    • 978799b feat: add new rule no-empty-static-block (#16325) (Sosuke Suzuki)
    • 69216ee feat: no-empty suggest to add comment in empty BlockStatement (#16470) (Nitin Kumar)
    • 319f0a5 feat: use context.languageOptions.ecmaVersion in core rules (#16458) (Milos Djermanovic)

    Bug Fixes

    • c3ce521 fix: Ensure unmatched glob patterns throw an error (#16462) (Nicholas C. Zakas)
    • 886a038 fix: handle files with unspecified path in getRulesMetaForResults (#16437) (Francesco Trotta)

    Documentation

    • ce93b42 docs: Stylelint property-no-unknown (#16497) (Nick Schonning)
    • d2cecb4 docs: Stylelint declaration-block-no-shorthand-property-overrides (#16498) (Nick Schonning)
    • 0a92805 docs: stylelint color-hex-case (#16496) (Nick Schonning)
    • 74a5af4 docs: fix stylelint error (#16491) (Milos Djermanovic)
    • 324db1a docs: explicit stylelint color related rules (#16465) (Nick Schonning)
    • 94dc4f1 docs: use Stylelint for HTML files (#16468) (Nick Schonning)
    • cc6128d docs: enable stylelint declaration-block-no-duplicate-properties (#16466) (Nick Schonning)
    • d03a8bf docs: Add heading to justification explanation (#16430) (Maritaria)
    • 8a15968 docs: add Stylelint configuration and cleanup (#16379) (Nick Schonning)
    • 9b0a469 docs: note commit messages don't support scope (#16435) (Andy Edwards)
    • 1581405 docs: improve context.getScope() docs (#16417) (Ben Perlmutter)
    • b797149 docs: update formatters template (#16454) (Milos Djermanovic)
    • 5ac4de9 docs: fix link to formatters on the Core Concepts page (#16455) (Vladislav)
    • 33313ef docs: core-concepts: fix link to semi rule (#16453) (coderaiser)
    Source code(tar.gz)
    Source code(zip)
  • v8.26.0(Oct 21, 2022)

    Features

    • 4715787 feat: check Object.create() in getter-return (#16420) (Yuki Hirasawa)
    • 28d1902 feat: no-implicit-globals supports exported block comment (#16343) (Sosuke Suzuki)
    • e940be7 feat: Use ESLINT_USE_FLAT_CONFIG environment variable for flat config (#16356) (Tomer Aberbach)
    • dd0c58f feat: Swap out Globby for custom globbing solution. (#16369) (Nicholas C. Zakas)

    Bug Fixes

    • df77409 fix: use baseConfig constructor option in FlatESLint (#16432) (Milos Djermanovic)
    • 33668ee fix: Ensure that glob patterns are matched correctly. (#16449) (Nicholas C. Zakas)
    • 740b208 fix: ignore messages without a ruleId in getRulesMetaForResults (#16409) (Francesco Trotta)
    • 8f9759e fix: --ignore-pattern in flat config mode should be relative to cwd (#16425) (Milos Djermanovic)
    • 325ad37 fix: make getRulesMetaForResults return a plain object in trivial case (#16438) (Francesco Trotta)
    • a2810bc fix: Ensure that directories can be unignored. (#16436) (Nicholas C. Zakas)
    • 35916ad fix: Ensure unignore and reignore work correctly in flat config. (#16422) (Nicholas C. Zakas)

    Documentation

    • 651649b docs: Core concepts page (#16399) (Ben Perlmutter)
    • 631cf72 docs: note --ignore-path not supported with flat config (#16434) (Andy Edwards)
    • 1692840 docs: fix syntax in examples for new config files (#16427) (Milos Djermanovic)
    • d336cfc docs: Document extending plugin with new config (#16394) (Ben Perlmutter)

    Chores

    • e917a9a ci: add node v19 (#16443) (Koichi ITO)
    • 4b70b91 chore: Add VS Code issues link (#16423) (Nicholas C. Zakas)
    • 232d291 chore: suppress a Node.js deprecation warning (#16398) (Koichi ITO)
    Source code(tar.gz)
    Source code(zip)
  • v8.25.0(Oct 7, 2022)

    Features

    • 173e820 feat: Pass --max-warnings value to formatters (#16348) (Brandon Mills)
    • 6964cb1 feat: remove support for ignore files in FlatESLint (#16355) (Milos Djermanovic)
    • 1cc4b3a feat: id-length counts graphemes instead of code units (#16321) (Sosuke Suzuki)

    Documentation

    • 90c6028 docs: Conflicting fixes (#16366) (Ben Perlmutter)
    • 5a3fe70 docs: Add VS to integrations page (#16381) (Maria José Solano)
    • 49bd1e5 docs: remove unused link definitions (#16376) (Nick Schonning)
    • 3bd380d docs: typo cleanups for docs (#16374) (Nick Schonning)
    • b3a0837 docs: remove duplicate words (#16378) (Nick Schonning)
    • a682562 docs: add BigInt to new-cap docs (#16362) (Sosuke Suzuki)
    • f6d57fb docs: Update docs README (#16352) (Ben Perlmutter)
    • 7214347 docs: fix logical-assignment-operators option typo (#16346) (Jonathan Wilsson)

    Chores

    • 1f78594 chore: upgrade @eslint/[email protected] (#16397) (Milos Djermanovic)
    • 8476a9b chore: Remove CODEOWNERS (#16375) (Nick Schonning)
    • 720ff75 chore: use "ci" for Dependabot commit message (#16377) (Nick Schonning)
    • 42f5479 chore: bump actions/stale from 5 to 6 (#16350) (dependabot[bot])
    • e5e9e27 chore: remove jsdoc dev dependency (#16344) (Milos Djermanovic)
    Source code(tar.gz)
    Source code(zip)
  • v8.24.0(Sep 23, 2022)

    Features

    • 1729f9e feat: account for sourceType: "commonjs" in the strict rule (#16308) (Milos Djermanovic)
    • b0d72c9 feat: add rule logical-assignment-operators (#16102) (fnx)
    • f02bcd9 feat: array-callback-return support findLast and findLastIndex (#16314) (Sosuke Suzuki)

    Documentation

    • 2c152ff docs: note false positive Object.getOwnPropertyNames in prefer-reflect (#16317) (AnnAngela)
    • bf7bd88 docs: fix warn severity description for new config files (#16324) (Nitin Kumar)
    • 8cc0bbe docs: use more clean link syntax (#16309) (Percy Ma)
    • 6ba269e docs: fix typo (#16288) (jjangga0214)

    Chores

    • 131e646 chore: Upgrade @humanwhocodes/config-array for perf (#16339) (Nicholas C. Zakas)
    • 504fe59 perf: switch from object spread to Object.assign when merging globals (#16311) (Milos Djermanovic)
    Source code(tar.gz)
    Source code(zip)
  • v8.23.1(Sep 12, 2022)

    Bug Fixes

    • b719893 fix: Upgrade eslintrc to stop redefining plugins (#16297) (Brandon Mills)
    • 734b54e fix: improve autofix for the prefer-const rule (#16292) (Nitin Kumar)
    • 6a923ff fix: Ensure that glob patterns are normalized (#16287) (Nicholas C. Zakas)
    • c6900f8 fix: Ensure globbing doesn't include subdirectories (#16272) (Nicholas C. Zakas)

    Documentation

    • 16cba3f docs: fix mobile double tap issue (#16293) (Sam Chen)
    • e098b5f docs: keyboard control to search results (#16222) (Shanmughapriyan S)
    • 1b5b2a7 docs: add Consolas font and prioritize resource loading (#16225) (Amaresh S M)
    • 1ae8236 docs: copy & use main package version in docs on release (#16252) (Jugal Thakkar)
    • 279f0af docs: Improve id-denylist documentation (#16223) (Mert Ciflikli)

    Chores

    • 38e8171 perf: migrate rbTree to js-sdsl (#16267) (Zilong Yao)
    • 1c388fb chore: switch nyc to c8 (#16263) (唯然)
    • 67db10c chore: enable linting .eleventy.js again (#16274) (Milos Djermanovic)
    • 42bfbd7 chore: fix npm run perf crashes (#16258) (唯然)
    Source code(tar.gz)
    Source code(zip)
  • v8.23.0(Aug 26, 2022)

    Features

    • 3e5839e feat: Enable eslint.config.js lookup from CLI (#16235) (Nicholas C. Zakas)
    • 30b1a2d feat: add allowEmptyCase option to no-fallthrough rule (#15887) (Amaresh S M)
    • 43f03aa feat: no-warning-comments support comments with decoration (#16120) (Lachlan Hunt)

    Documentation

    • b1918da docs: package.json conventions (#16206) (Patrick McElhaney)
    • 0e03c33 docs: remove word immediately (#16217) (Strek)
    • c6790db docs: add anchor link for "migrating from jscs" (#16207) (Percy Ma)
    • 7137344 docs: auto-generation edit link (#16213) (Percy Ma)

    Chores

    • 2e004ab chore: upgrade @eslint/[email protected] (#16249) (Milos Djermanovic)
    • d35fbbe chore: Upgrade to [email protected] (#16243) (Milos Djermanovic)
    • ed26229 test: add no-extra-parens tests with rest properties (#16236) (Milos Djermanovic)
    • deaf69f chore: fix off-by-one min-width: 1023px media queries (#15974) (Milos Djermanovic)
    • 63dec9f refactor: simplify parseListConfig (#16241) (Milos Djermanovic)
    Source code(tar.gz)
    Source code(zip)
  • v8.22.0(Aug 14, 2022)

    Features

    • 2b97607 feat: Implement caching for FlatESLint (#16190) (Nicholas C. Zakas)
    • fd5d3d3 feat: add methodsIgnorePattern option to object-shorthand rule (#16185) (Milos Djermanovic)

    Documentation

    • 9f5a752 docs: optimize image assets (#16170) (Sam Chen)
    • 61b2948 docs: add svgo command to pre commit hook (#16178) (Amaresh S M)
    • 784096d docs: improve search result UI (#16187) (Sam Chen)
    • d0f4cb4 docs: use shorthand property name in example (#16180) (Kevin Elliott)

    Chores

    • 10a6e0e chore: remove deploy workflow for playground (#16186) (Milos Djermanovic)
    Source code(tar.gz)
    Source code(zip)
  • v8.21.0(Aug 1, 2022)

    Features

    • 7b43ea1 feat: Implement FlatESLint (#16149) (Nicholas C. Zakas)
    • 92bf49a feat: improve the key width calculation in key-spacing rule (#16154) (Nitin Kumar)
    • c461542 feat: add new allowLineSeparatedGroups option to the sort-keys rule (#16138) (Nitin Kumar)
    • 1cdcbca feat: add deprecation warnings for legacy API in RuleTester (#16063) (Nitin Kumar)

    Bug Fixes

    • 0396775 fix: lines-around-comment apply allowBlockStart for switch statements (#16153) (Nitin Kumar)

    Documentation

    • 2aadc93 docs: add anchors to headings inside docs content (#16134) (Strek)

    Chores

    • 8892511 chore: Upgrade to Espree 9.3.3 (#16173) (Brandon Mills)
    • 1233bee chore: switch to eslint-plugin-node's maintained fork (#16150) (唯然)
    • 97b95c0 chore: upgrade puppeteer v13 (#16151) (唯然)
    Source code(tar.gz)
    Source code(zip)
  • v8.20.0(Jul 16, 2022)

    Features

    • ca83178 feat: catch preprocess errors (#16105) (JounQin)

    Bug Fixes

    • 30be0ed fix: no-warning-comments rule escapes special RegEx characters in terms (#16090) (Lachlan Hunt)
    • bfe5e88 fix: ignore spacing before ] and } in comma-spacing (#16113) (Milos Djermanovic)

    Documentation

    • 845c4f4 docs: Add website team details (#16115) (Nicholas C. Zakas)
    • 5a0dfdb docs: Link to blog post in no-constant-binary-expression (#16112) (Jordan Eldredge)
    • bc692a9 docs: remove install command (#16084) (Strek)
    • 49ca3f0 docs: don't show toc when content not found (#16095) (Amaresh S M)
    • ba19e3f docs: enhance 404 page UI (#16097) (Amaresh S M)
    • a75d3b4 docs: remove unused meta.docs.category field in working-with-rules page (#16109) (Brandon Scott)
    • cdc0206 docs: add formatters page edit link (#16094) (Amaresh S M)
    • 4d1ed22 docs: preselect default theme (#16098) (Strek)
    • 4b79612 docs: add missing correct/incorrect containers (#16087) (Milos Djermanovic)
    • 09f6acb docs: fix UI bug on rules index and details pages (#16082) (Deepshika S)
    • f5db264 docs: remove remaining duplicate rule descriptions (#16093) (Milos Djermanovic)
    • 32a6b2a docs: Add scroll behaviour smooth (#16056) (Amaresh S M)

    Chores

    • bbf8df4 chore: Mark autogenerated release blog post as draft (#16130) (Nicholas C. Zakas)
    • eee4306 chore: update internal lint dependencies (#16088) (Bryan Mishkin)
    • 9615a42 chore: update formatter examples template to avoid markdown lint error (#16085) (Milos Djermanovic)
    • 62541ed chore: fix markdown linting error (#16083) (唯然)
    Source code(tar.gz)
    Source code(zip)
  • v8.19.0(Jul 2, 2022)

    Features

    • 7023628 feat: add importNames support for patterns in no-restricted-imports (#16059) (Brandon Scott)
    • 472c368 feat: fix handling of blockless with statements in indent rule (#16068) (Milos Djermanovic)

    Bug Fixes

    • fc81848 fix: throw helpful exception when rule has wrong return type (#16075) (Bryan Mishkin)

    Documentation

    • 3ae0574 docs: Remove duplicate rule descriptions (#16052) (Amaresh S M)
    • f50cf43 docs: Add base href to each page to fix relative URLs (#16046) (Nicholas C. Zakas)
    • ae4b449 docs: make logo link clickable on small width screens (#16058) (Milos Djermanovic)
    • 280f898 docs: use only fenced code blocks (#16044) (Milos Djermanovic)
    • f5d63b9 docs: add listener only if element exists (#16045) (Amaresh S M)
    • 8b639cc docs: add missing migrating-to-8.0.0 in the user guide (#16048) (唯然)
    • b8e68c1 docs: Update release process (#16036) (Nicholas C. Zakas)
    • 6d0cb11 docs: remove table of contents from markdown text (#15999) (Nitin Kumar)

    Chores

    • e884933 chore: use github-slugger for markdown anchors (#16067) (Strek)
    • 02e9cb0 chore: revamp carbon ad style (#16078) (Amaresh S M)
    • b6aee95 chore: remove unwanted comments from rules markdown (#16054) (Strek)
    • 6840940 chore: correctly use .markdownlintignore in Makefile (#16060) (Bryan Mishkin)
    • 48904fb chore: add missing images (#16017) (Amaresh S M)
    • 910f741 chore: add architecture to nav (#16039) (Strek)
    • 9bb24c1 chore: add correct incorrect in all rules doc (#16021) (Deepshika S)
    • 5a96af8 chore: prepare versions data file (#16035) (Nicholas C. Zakas)
    • 50afe6f chore: Included githubactions in the dependabot config (#15985) (Naveen)
    • 473411e chore: add deploy workflow for playground (#16034) (Milos Djermanovic)
    • a30b66c chore: fix print style (#16025) (Amaresh S M)
    • f4dad59 chore: add noindex meta tag (#16016) (Milos Djermanovic)
    • db387a8 chore: fix sitemap (#16026) (Milos Djermanovic)
    • 285fbc5 chore: remove TOC from printable (#16020) (Strek)
    • 8e84c21 chore: remove ligatures from fonts (#16019) (Strek)
    Source code(tar.gz)
    Source code(zip)
  • v8.18.0(Jun 17, 2022)

    Features

    • a6273b8 feat: account for rule creation time in performance reports (#15982) (Nitin Kumar)

    Bug Fixes

    • f364d47 fix: Make no-unused-vars treat for..of loops same as for..in loops (#15868) (Alex Bass)

    Documentation

    • 4871047 docs: Update analytics, canonical URL, ads (#15996) (Nicholas C. Zakas)
    • cddad14 docs: Add correct/incorrect containers (#15998) (Nicholas C. Zakas)
    • b04bc6f docs: Add rules meta info to rule pages (#15902) (Nicholas C. Zakas)
    • 1324f10 docs: unify the wording referring to optional exception (#15893) (Abdelrahman Elkady)
    • ad54d02 docs: add missing trailing slash to some internal links (#15991) (Milos Djermanovic)
    • df7768e docs: Switch to version-relative URLs (#15978) (Nicholas C. Zakas)
    • 21d6479 docs: change some absolute links to relative (#15970) (Milos Djermanovic)
    • f31216a docs: Update README team and sponsors (ESLint Jenkins)

    Build Related

    • ed49f15 build: remove unwanted parallel and image-min for dev server (#15986) (Strek)

    Chores

    • f6e2e63 chore: fix 'replaced by' rule list (#16007) (Milos Djermanovic)
    • d94dc84 chore: remove unused deprecation warnings (#15994) (Francesco Trotta)
    • cdcf11e chore: fix versions link (#15995) (Milos Djermanovic)
    • d2a8715 chore: add trailing slash to pathPrefix (#15993) (Milos Djermanovic)
    • 58a1bf0 chore: tweak URL rewriting for local previews (#15992) (Milos Djermanovic)
    • 80404d2 chore: remove docs deploy workflow (#15984) (Nicholas C. Zakas)
    • 71bc750 chore: Set permissions for GitHub actions (#15971) (Naveen)
    • 90ff647 chore: avoid generating subdirectories for each page on new docs site (#15967) (Milos Djermanovic)
    Source code(tar.gz)
    Source code(zip)
  • v8.17.0(Jun 3, 2022)

    Features

    • 55319e1 feat: fix indent bug with semicolon-first style (#15951) (Milos Djermanovic)
    • f6d7920 feat: add allowNamedExports option to no-use-before-define (#15953) (Milos Djermanovic)

    Bug Fixes

    • 54c0953 fix: cleanup typos (#15939) (Nick Schonning)
    • 845a7af fix: typo ocatal -> octal (#15940) (Nick Schonning)

    Documentation

    • b915018 docs: Update website UI to latest (#15944) (Nicholas C. Zakas)
    • f0bb609 docs: Update Exponentiation operator MDN link (#15960) (Pranjal Jain)
    • baa0153 docs: Use correct past tense "left" instead of "leaved" (#15950) (Frederik Braun)
    • 1351a9b docs: Add Resources section to rule pages (#15901) (Nicholas C. Zakas)
    • 68cf0fb docs: cleanup typos (#15936) (Nick Schonning)
    • 13b62ae docs: use-dart-sass instead of node-sass (#15912) (Deepshika S)
    • c81c5d6 docs: add social media links (#15920) (Deepshika S)
    • 0d6a50b docs: fix openjs link (#15917) (Amaresh S M)
    • 54910f5 docs: display version in mobile view (#15909) (Amaresh S M)

    Chores

    • da694b9 chore: avoid theme flashes (#15927) (Strek)
    • f836743 chore: Use build hook for docs deploy (#15945) (Nicholas C. Zakas)
    • ce035e5 test: cleanup typos (#15937) (Nick Schonning)
    • 10249ad chore: use addEventListener instead of addListener (#15923) (Amaresh S M)
    • 5f5c1fb chore: lint eleventy config file (#15904) (Milos Djermanovic)
    • 8513d37 chore: update Rule typedefs (#15915) (Milos Djermanovic)
    • 55534f1 test: ensure no-restricted-imports works with NodeJS imports (#15907) (Nick Mazuk)
    Source code(tar.gz)
    Source code(zip)
  • v8.16.0(May 20, 2022)

    Features

    • cab0c22 feat: add Unicode flag suggestion in no-misleading-character-class (#15867) (Milos Djermanovic)
    • 38ae956 feat: check Unicode code point escapes in no-control-regex (#15862) (Milos Djermanovic)
    • ee69cd3 feat: Update global variables (#15871) (Sébastien Règne)

    Bug Fixes

    • 3f09aab fix: function-paren-newline crash on "new new Foo();" (#15850) (coderaiser)

    Documentation

    • 050d5f4 docs: Static further reading links (#15890) (Nicholas C. Zakas)
    • 36287c0 docs: fix absolute paths in related rules shortcode to work from /docs (#15892) (Milos Djermanovic)
    • 90b6990 docs: fix absolute links in rule macro to work from /docs (#15891) (Milos Djermanovic)
    • f437249 docs: Adjust docs site path prefix (#15889) (Nicholas C. Zakas)
    • 6e16025 docs: update 'Related Rules' and 'Further Reading' in remaining rules (#15884) (Milos Djermanovic)
    • 1d39f69 docs: remove confusing examples for no-mixed-operators (#15875) (Milos Djermanovic)
    • 3071d76 docs: Fix some grammar issues (#15837) (byodian)

    Chores

    • 1768d0d chore: upgrade @eslint/[email protected] (#15903) (Milos Djermanovic)
    • c686e4c chore: Add deploy workflow for docs site (#15894) (Nicholas C. Zakas)
    • c7894cd chore: enable some rules from eslint-plugin-unicorn internally (#15878) (Bryan Mishkin)
    • ea65cb5 chore: upgrade eslint-plugin-eslint-plugin@^4.2.0 (#15882) (唯然)
    • cc29c69 chore: Upgrade official GitHub actions to latest versions (#15880) (Darius Dzien)
    • 5891c75 chore: Refactor rule docs format (#15869) (Nicholas C. Zakas)
    Source code(tar.gz)
    Source code(zip)
  • v8.15.0(May 6, 2022)

    Features

    • ab37d3b feat: add enforceInClassFields option to no-underscore-dangle (#15818) (Roberto Cestari)

    Bug Fixes

    • 8bf9440 fix: "use strict" should not trigger strict mode in ES3 (#15846) (Milos Djermanovic)

    Documentation

    • 28116cc docs: update AST node names link in no-restricted-syntax (#15843) (Milos Djermanovic)
    • 272965f docs: fix h1 heading on formatters page (#15834) (Milos Djermanovic)
    • a798166 docs: update example for running individual rule tests (#15833) (Milos Djermanovic)
    • 57e732b docs: mark SourceCode#getJSDocComment deprecated in working-with-rules (#15829) (Milos Djermanovic)
    • 9a90abf docs: update docs directory in working-with-rules (#15830) (Milos Djermanovic)
    • 810adda docs: add more examples for prefer-object-spread (#15831) (coderaiser)
    • 06b1edb docs: clarify no-control-regex rule (#15808) (Milos Djermanovic)
    • 9ecd42f docs: Fixed typo in code comment (#15812) (Addison G)
    • de992b7 docs: remove links to 2fa document (#15804) (Milos Djermanovic)
    • 5222659 docs: fix 'Related Rules' heading in no-constant-binary-expression (#15799) (Milos Djermanovic)
    • e70ae81 docs: Update README team and sponsors (ESLint Jenkins)

    Chores

    • 1ba6a92 chore: upgrade @eslint/[email protected] (#15847) (Milos Djermanovic)
    • 8167aa7 chore: bump version of minimatch due to security issue PRISMA-2022-0039 (#15774) (Jan Opravil)
    • b8995a4 chore: Implement docs site (#15815) (Nicholas C. Zakas)
    • 6494e3e chore: update link in codeql-analysis.yml (#15817) (Milos Djermanovic)
    • 36503ec chore: enable no-constant-binary-expression in eslint-config-eslint (#15807) (唯然)
    Source code(tar.gz)
    Source code(zip)
  • v8.14.0(Apr 22, 2022)

    Features

    • ab6363d feat: Add rule no-constant-binary-expression (#15296) (Jordan Eldredge)

    Bug Fixes

    • 35fa1dd fix: allow project paths to have URL-encoded characters (#15795) (Milos Djermanovic)
    • 413f1d5 fix: update astUtils.isDirectiveComment with globals and exported (#15775) (Milos Djermanovic)

    Build Related

    • c2407e8 build: add node v18 (#15791) (唯然)

    Chores

    • 735458c chore: add static frontmatter to no-constant-binary-expression docs (#15798) (Milos Djermanovic)
    • db28f2c chore: Add static frontmatter to docs (#15782) (Nicholas C. Zakas)
    • 3bca59e chore: markdownlint autofix on commit (#15783) (Nicholas C. Zakas)
    Source code(tar.gz)
    Source code(zip)
  • v8.13.0(Apr 8, 2022)

    Features

    • 274acbd feat: fix no-eval logic for this in arrow functions (#15755) (Milos Djermanovic)

    Bug Fixes

    • 97b57ae fix: invalid operator in operator-assignment messages (#15759) (Milos Djermanovic)

    Documentation

    • c32482e docs: Typo in space-infix-ops docs (#15754) (kmin-jeong)
    • f2c2d35 docs: disambiguate types FormatterFunction and LoadedFormatter (#15727) (Francesco Trotta)

    Chores

    • bb4c0d5 chore: Refactor docs to work with docs.eslint.org (#15744) (Nicholas C. Zakas)
    • d36f12f chore: remove lib/init from eslint config (#15748) (Milos Djermanovic)
    • a59a4e6 chore: replace trimLeft/trimRight with trimStart/trimEnd (#15750) (Milos Djermanovic)
    Source code(tar.gz)
    Source code(zip)
  • v8.12.0(Mar 25, 2022)

    Features

    • 685a67a feat: fix logic for top-level this in no-invalid-this and no-eval (#15712) (Milos Djermanovic)

    Chores

    • 18f5e05 chore: padding-line-between-statements remove useless additionalItems (#15706) (Martin Sadovy)
    Source code(tar.gz)
    Source code(zip)
  • v8.11.0(Mar 11, 2022)

    Features

    • 800bd25 feat: add destructuredArrayIgnorePattern option in no-unused-vars (#15649) (Nitin Kumar)
    • 8933fe7 feat: Catch undefined and Boolean() in no-constant-condition (#15613) (Jordan Eldredge)
    • f90fd9d feat: Add ESLint favicon to the HTML report document (#15671) (Mahdi Hosseinzadeh)
    • 57b8a57 feat: valid-typeof always ban undefined (#15635) (Zzzen)

    Bug Fixes

    • 6814922 fix: escaping for square brackets in ignore patterns (#15666) (Milos Djermanovic)
    • c178ce7 fix: extend the autofix range in comma-dangle to ensure the last element (#15669) (Milos Djermanovic)

    Documentation

    • c481cec docs: add fast-eslint-8 to atom integrations (userguide) (#15695) (db developer)
    • d2255db docs: Add clarification about eslint-enable (#15680) (dosisod)
    • 8b9433c docs: add object pattern to first section of computed-property-spacing (#15679) (Milos Djermanovic)
    • de800c3 docs: link to minimatch docs added. (#15688) (Gaurav Tewari)
    • 8f675b1 docs: sort-imports add single named import example (#15675) (Arye Eidelman)

    Chores

    • 385c9ad chore: rm trailing space in docs (#15689) (唯然)
    Source code(tar.gz)
    Source code(zip)
  • v8.10.0(Feb 25, 2022)

    Features

    • 6e2c325 feat: Add ignoreOnInitialization option to no-shadow rule (#14963) (Soufiane Boutahlil)
    • 115cae5 feat: --debug prints time it takes to parse a file (#15609) (Bartek Iwańczuk)
    • 345e70d feat: Add onlyOneSimpleParam option to no-confusing-arrow rule (#15566) (Gautam Arora)

    Bug Fixes

    • cdc5802 fix: Avoid __dirname for built-in configs (#15616) (DoZerg)
    • ee7c5d1 fix: false positive in camelcase with combined properties (#15581) (Nitin Kumar)

    Documentation

    • 1005bd5 docs: update CLA information (#15630) (Nitin Kumar)
    • 5d65c3b docs: Fix typo in no-irregular-whitespace (#15634) (Ryota Sekiya)
    • b93af98 docs: add links between rules about whitespace around block curly braces (#15625) (Milos Djermanovic)
    • ebc0460 docs: update babel links (#15624) (Milos Djermanovic)

    Chores

    • 7cec74e chore: upgrade @eslint/[email protected] (#15648) (Milos Djermanovic)
    • 11c8580 chore: read ESLINT_MOCHA_TIMEOUT env var in Makefile.js (#15626) (Piggy)
    • bfaa548 test: add integration tests with built-in configs (#15612) (Milos Djermanovic)
    • 39a2fb3 perf: fix lazy loading of core rules (#15606) (Milos Djermanovic)
    • 3fc9196 chore: include tests/conf in test runs (#15610) (Milos Djermanovic)
    Source code(tar.gz)
    Source code(zip)
  • v8.9.0(Feb 12, 2022)

    Features

    • 68f64a9 feat: update eslint-scope to ignore "use strict" directives in ES3 (#15595) (Milos Djermanovic)
    • db57639 feat: add es2016, es2018, es2019, and es2022 environments (#15587) (Milos Djermanovic)
    • 2dc38aa feat: fix bug with arrow function return types in function-paren-newline (#15541) (Milos Djermanovic)
    • 6f940c3 feat: Implement FlatRuleTester (#15519) (Nicholas C. Zakas)

    Documentation

    • 570a036 docs: add one-var example with for-loop initializer (#15596) (Milos Djermanovic)
    • 417191d docs: Remove the $ prefix in terminal commands (#15565) (Andreas Lewis)
    • 389ff34 docs: add missing Variable#scope property in the scope manager docs (#15571) (Milos Djermanovic)
    • f63795d docs: no-eval replace dead link with working one (#15568) (rasenplanscher)
    • 0383591 docs: Remove old Markdown issue template (#15556) (Brandon Mills)
    • a8dd5a2 docs: add 'when not to use it' section in no-duplicate-case docs (#15563) (Milos Djermanovic)
    • 1ad439e docs: add missed verb in docs (#15550) (Jeff Mosawy)

    Chores

    • 586d45c chore: Upgrade to [email protected] (#15600) (Milos Djermanovic)
    • 623e1e2 chore: Upgrade to [email protected] (#15599) (Milos Djermanovic)
    • 355b23d chore: fix outdated link to Code of Conduct in PR template (#15578) (Rich Trott)
    • b10fef2 ci: use Node 16 for browser test (#15569) (Milos Djermanovic)
    • 92f89fb chore: suggest demo link in bug report template (#15557) (Brandon Mills)
    Source code(tar.gz)
    Source code(zip)
  • v8.8.0(Jan 28, 2022)

    Features

    • 5d60812 feat: implement rfc 2021-suppression-support (#15459) (Yiwei Ding)

    Documentation

    • 5769cc2 docs: fix relative link (#15544) (Nick Schonning)
    • ccbc35f docs: trimmed rules h1s to just be rule names (#15514) (Josh Goldberg)
    • 851f1f1 docs: fixed typo in comment (#15531) (Jiapei Liang)
    • 7d7af55 docs: address upcoming violation of markdownlint rule MD050/strong-style (#15529) (David Anson)
    Source code(tar.gz)
    Source code(zip)
  • v8.7.0(Jan 16, 2022)

    Features

    • 19ad061 feat: no-restricted-imports support casing (#15439) (gfyoung)
    • 564ecdb feat: Support arbitrary module namespace names in no-restricted-imports (#15491) (Milos Djermanovic)
    • 968a02a feat: Support arbitrary module namespace names in no-useless-rename (#15493) (Milos Djermanovic)
    • 0d2b9a6 feat: move eslint --init to @eslint/create-config (#15150) (唯然)
    • 127f524 feat: false negative with property option in id-match (#15474) (Nitin Kumar)
    • 359b2c1 feat: Support arbitrary module namespace names in the camelcase rule (#15490) (Milos Djermanovic)
    • 3549571 feat: Support arbitrary module namespace names in the quotes rule (#15479) (Milos Djermanovic)
    • 5563c45 feat: Support arbitrary module namespace names in keyword-spacing (#15481) (Milos Djermanovic)
    • fd3683f feat: Support arbitrary module namespace names in no-restricted-exports (#15478) (Milos Djermanovic)

    Bug Fixes

    • a8db9a5 fix: no-invalid-this false positive in class field initializer (#15495) (Milos Djermanovic)
    • 02d6426 fix: Correctly consume RuleTester statics (#15507) (Brad Zacher)
    • db15802 fix: Add property fatalErrorCount to ignored file results (#15520) (Francesco Trotta)
    • 03ac8cf fix: Prevent false positives with no-constant-condition (#15486) (Jordan Eldredge)

    Documentation

    • f50f849 docs: Update CLI docs to prefer local install (#15513) (Nicholas C. Zakas)
    • 0469eb1 docs: Update shell code fences for new website (#15522) (Olga)

    Chores

    • 369fb1b chore: Upgrade to [email protected] (#15526) (Brandon Mills)
    • ba6317b ci: remove master branch from CI configs (#15501) (Milos Djermanovic)
    • 79b6340 chore: fixed typo in client-Engine (#15497) (Abhay Gupta)
    • 6278281 chore: switch new syntax issue template to forms (#15480) (Nitin Kumar)
    Source code(tar.gz)
    Source code(zip)
  • v8.6.0(Dec 31, 2021)

    Features

    • 6802a54 feat: handle logical assignment in no-self-assign (#14152) (Zzzen)
    • 3b38018 feat: allow to define eslint-disable-next-line in multiple lines (#15436) (Nitin Kumar)
    • 9d6fe5a feat: false negative with onlyDeclarations + properties in id-match (#15431) (Nitin Kumar)

    Documentation

    • 6c4dee2 docs: Document homedir is a configuration root (#15469) (Bas Bosman)
    • 51c37b1 docs: consistency changes (#15404) (Bas Bosman)
    • 775d181 docs: Mention character classes in no-useless-escape (#15421) (Sebastian Simon)

    Chores

    • 3a384fc chore: Upgrade espree to 9.3.0 (#15473) (Brandon Mills)
    • 1443cc2 chore: Update blogpost.md.ejs (#15468) (Nicholas C. Zakas)
    • 28e907a refactor: remove unused parameter in linter.js (#15451) (Milos Djermanovic)
    • eaa08d3 test: add tests for allowReserved parser option with flat config (#15450) (Milos Djermanovic)
    Source code(tar.gz)
    Source code(zip)
  • v8.5.0(Dec 17, 2021)

    Features

    • 94e77a6 feat: Suggestions support for prefer-regex-literals (#15077) (Yash Singh)
    • eafaf52 feat: add prefer-object-has-own rule (#15346) (Nitin Kumar)

    Bug Fixes

    • 7d832d4 fix: improve prefer-template fixer (#15230) (Nitin Kumar)
    • 981fb48 fix: do not report global references in id-match rule (#15420) (Nitin Kumar)
    • f13d4a6 fix: improve autofix of prefer-object-has-own (#15419) (Nitin Kumar)
    • f4559a0 fix: add helpful message when test case has non-string code/name (#15425) (Bryan Mishkin)

    Documentation

    • 314c84c docs: add an incorrect code example in for-direction (#15434) (Holger Jeromin)
    • 3928175 docs: add destructuring examples for computed-property-spacing (#15423) (Nitin Kumar)
    • a53e59e docs: add more examples for array-element-newline rule (#15427) (Nitin Kumar)
    • 74cf0a0 docs: update CLA info (#15370) (Nitin Kumar)
    • e84195e docs: fix heading level for an option in class-methods-use-this rule (#15399) (Takuya Fukuju)

    Chores

    • 225f211 test: add destructuring test cases for computed-property-spacing (#15424) (Nitin Kumar)
    • f2c7ba6 ci: use node v16 for macOS and windows jobs (#15418) (Nitin Kumar)
    Source code(tar.gz)
    Source code(zip)
  • v8.4.1(Dec 7, 2021)

  • v8.4.0(Dec 4, 2021)

    Features

    • 5771663 feat: add allowReserved parser option (#15387) (Milos Djermanovic)
    • 32ac37a feat: Flat config support in Linter (refs #13481) (#15185) (Nicholas C. Zakas)
    • d041f34 feat: Treat Class/New Expressions as truthy in no-constant-condition (#15326) (Jordan Eldredge)
    • 8f44cf5 feat: report only lines that exceed the limit in max-lines-per-function (#15140) (Sneh Khatri)
    • 808ad35 feat: pass cwd to formatters (refs eslint/rfcs#57) (#13392) (Toru Nagashima)
    • f1b7499 feat: support async formatters (#15243) (MO)

    Bug Fixes

    • 4940cc5 fix: mark --rulesdir option as deprecated in CLI docs (#15310) (Kevin Partington)

    Documentation

    • 54deec5 docs: update integrations.md (#15380) (Vlad Sholokhov)
    • fa0423a docs: fix typo in PR template (#15365) (Nitin Kumar)
    • e233920 docs: enable a few more markdownlint rules and fix violations (#15368) (Bryan Mishkin)
    • 632176d docs: Dedent needlessly indented example in getter-return docs (#15363) (Jordan Eldredge)
    • 4497e88 docs: Update release notes blog post template (#15285) (Nicholas C. Zakas)

    Chores

    • efede90 chore: upgrade @eslint/[email protected] (#15389) (Milos Djermanovic)
    • 0b8c846 chore: fix update-readme to avoid multiple consecutive blank lines (#15375) (Milos Djermanovic)
    • 94b2a8b chore: Use default Chromium binary in M1 Mac tests (#15371) (Brandon Mills)
    • ba58d94 ci: use node v16 for Verify Files (#15364) (Nitin Kumar)
    • 1e32ee5 chore: add jsdoc type annotation to rules (#15291) (Bryan Mishkin)
    Source code(tar.gz)
    Source code(zip)
Owner
ESLint
Find and fix problems in your JavaScript code.
ESLint
A CLI to find information about Pokemon

A CLI to find information about Pokemon

Dhruva Srinivas 6 Nov 1, 2022
🌟 JavaScript Style Guide, with linter & automatic code fixer

JavaScript Standard Style Sponsored by English • Español (Latinoamérica) • Français • Bahasa Indonesia • Italiano (Italian) • 日本語 (Japanese) • 한국어 (Ko

Standard JS 27.8k Dec 31, 2022
Detect copy-pasted and structurally similar code

Detect copy-pasted and structurally similar JavaScript code. Requires Node.js 6.0+, and supports ES6, JSX as well as Flow. Note: the project has been

Daniel St. Jules 3.5k Dec 26, 2022
ECMAScript code beautifier/formatter

esformatter ECMAScript code beautifier/formatter. Important This tool is still missing support for many important features. Please report any bugs you

Miller Medeiros 968 Nov 1, 2022
The easiest way of running code in a browser environment

browser-run The easiest way of running code in a browser environment. Bundles electronjs by default! Usage $ echo "console.log('Hey from ' + location)

Julian Gruber 415 Dec 19, 2022
Pathokun, a path generator, updates your content just with your frontend by HTTP GET Request!

Pathokun Pathokun, a path generator, update your content just with your frontend by HTTP GET Request! In this way you can make Full-Stack project with

Pathokun 15 Feb 7, 2022
Test your internet connection speed and ping using speedtest.net from the CLI

speed-test Test your internet connection speed and ping using speedtest.net from the CLI Install Ensure you have Node.js version 8+ installed. Then ru

Sindre Sorhus 3.8k Jan 7, 2023
📜 Create mutable log lines into the terminal, and give life to your logs!

Because Logging can be pretty and fun Installation $ npm install draftlog What it does It allows you to re-write a line of your log after being writt

Ivan Seidel 1.2k Dec 31, 2022
HMSC (How Much Stuffs CLI) analyst for your files and folders

HMSC ?? About HMSC (How Much Stuffs CLI) analyst for your files and folders ?? Screenshot ?? Requirements Node.js NPM ?? Installation $ npm i -g hmsc

Abdullah Veliyev 26 Jan 10, 2022
Add a hungry turtle to your terminal and feed it every time you mistype 'npm' as 'nom'

Nom Does this ever happen to you? You happily code away on a project, navigating the command line like a pro, testing, error logging, installing packa

Meike Hankewicz 5 Apr 26, 2022
Pipeable javascript. Quickly filter, map, and reduce from the terminal

Pipeable JavaScript - another utility like sed/awk/wc... but with JS! Quickly filter, map and reduce from the command line. Features a streaming API.

Daniel St. Jules 410 Dec 10, 2022
:eyeglasses: Node.js module that tells you when your package npm dependencies are out of date.

Node.js module that tells you when your package npm dependencies are out of date. Getting Started Install Node.js. Install david: cd /your/project/dir

Alan Shaw 953 Dec 25, 2022
Get your public IP address - very fast!

public-ip Get your public IP address - very fast! In Node.js, it queries the DNS records of OpenDNS, Google DNS, and HTTPS services to determine your

Sindre Sorhus 962 Dec 25, 2022
Translations with speech synthesis in your terminal as a node package

Normit Normit is an easy way to translate stuff in your terminal. You can check out its Ruby gem version termit. Installation npm install normit -g Us

Paweł Urbanek 234 Jan 1, 2023
:sparkles: Make your JSON look AWESOME

Make your JSON objects look AWESOME! This package allows you to give style to your JSON on your console! Installation : $ npm install jsome if you n

Khalid REHIOUI 234 Dec 3, 2022
Terminal recorder: Record your termial session into HTML

terminal-recorder Terminal recorder allows you to record your bash session, and export it to html so then you can share it with your friends. GitHub P

Cristian Cortez 104 Mar 3, 2022
Simple config handling for your app or module

conf Simple config handling for your app or module All you have to care about is what to persist. This module will handle all the dull details like wh

Sindre Sorhus 1k Jan 7, 2023
An extension geared towards Spotify users with larger libraries; view all your playlists that contain a specific song with the click of a button. Designed for Spicetify (https://github.com/khanhas/spicetify-cli)

ViewPlaylistsWithSong An extension developed for Spicetify that allows you to view all the playlists in your library that contain a certain song. Idea

null 21 Dec 13, 2022
Google Chrome extension which randomly generates a customisable 3D bamboo forest in your new tab

Bamboo-New-Tab bamboo-new-tab-demo.mp4 bamboo-new-tab-options-demo.mp4 Try it out Hosted version: https://conwayjw97.github.io/Bamboo-New-Tab/ To run

James 15 Nov 16, 2021