Highlights
This is a summary of the major changes you need to know about for this version of ESLint.
Fix For Configuring Scoped Plugin Rules
We discovered a significant bug (#6362) when using scoped plugins. Scoped plugins use npm scopes such as @foo/eslint-plugin-bar
. Due to a bug in ESLint, if you had a rule baz
in the plugin @foo/eslint-plugin-bar
, you would have to configure it without the scope, such as:
rules:
bar/baz: error
This is problematic because it’s possible that an unscoped plugin eslint-plugin-bar
might exist and need to be configured in the same way.
Important: Starting in this release, you should now configure scoped plugin rules using the scope as a prefix. The previous example should now be written as:
rules:
@foo/bar/baz: error
The other format will continue work until we release ESLint v4.0.0, at which point only the format using the package scope will work. We encourage you to update your configuration files as quickly as possible so as not to be caught up in the change for version 4.0.0.
Performance Improvements
We’ve been steadily improving the performance of traversing directories in ESLint. Previously, we made a change that dramatically improved the speed of directory traversal for those who weren’t using .eslintignore
(#5679). In this release, we’ve continued on to improve the speed for those using .eslintignore
as well (#6710).
New Ways to Configure ECMAScript Version
ESLint has supported the ecmaVersion
property for specifying which versions of ECMAScript syntax to enable. Prior to this release, you could use 3
, 5
, 6
, and 7
. However, the official ECMAScript standard is now being defined by year, so some new users found this confusing. As such, we’ve added the ability to use 2015
and 2016
in the ecmaVersion
field (these correspond to 6
and 7
, respectively), so that going forward we can use the more appropriate year-based values.
New Rules
The following new rules were added in this release:
Features
- 21ab784 New: do not remove non visited files from cache. (fixes #6780) (#6921) (Roy Riojas)
- 0d268f1 New:
symbol-description
rule (fixes #6778) (#6825) (Jarek Rencz) - a5189a6 New:
class-methods-use-this
rule (fixes #5139) (#6881) (Gyandeep Singh)
Enhancements
- c210510 Update: add fixer for no-extra-parens (fixes #6944) (#6950) (not-an-aardvark)
- d6fd064 Update: Add never option to multiline-ternary (fixes #6751) (#6905) (Kai Cataldo)
- cf2242c Update:
requireStringLiterals
option forvalid-typeof
(fixes #6698) (#6923) (not-an-aardvark) - 1563808 Update: add support for ecmaVersion 20xx (fixes #6750) (#6907) (Kai Cataldo)
Bug Fixes
- ca3d448 Fix:
prefer-const
false negative abouteslintUsed
(fixes #5837) (#6971) (Toru Nagashima) - 3e522be Fix: false negative of
indent
withelse if
statements (fixes #6956) (#6965) (not-an-aardvark) - 3c710c9 Fix: rename “AirBnB” => “Airbnb” init choice (fixes #6969) (Harrison Shoff)
- 7660b39 Fix:
object-curly-spacing
for type annotations (fixes #6940) (#6945) (Toru Nagashima) - 3a1763c Fix: enable
@scope/plugin/ruleId
-style specifier (refs #6362) (#6939) (Toru Nagashima) - a063d4e Fix: no-cond-assign within a function expression (fixes #6908) (#6909) (Patrick McElhaney)
- 8851ddd Fix: Improve pref of globbing by inheriting glob.GlobSync (fixes #6710) (#6783) (Kael Zhang)
- 8561389 Fix:
no-trailing-spaces
wrong fixing (fixes #6933) (#6937) (Toru Nagashima)
Documentation
- 1153955 Docs: Draft of JSCS migration guide (refs #5859) (#6942) (Nicholas C. Zakas)
- 2dfb290 Docs: Distinguish examples in rules under Stylistic Issues part 7 (#6760) (Kenneth Williams)
- 6a92be5 Docs: Update semantic versioning policy (#6935) (alberto)
- d8b770c Docs: Change rule descriptions for consistent casing (#6915) (Brandon Mills)