Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning. This change log adheres to standards from Keep a CHANGELOG.

Unreleased

2.25.4 - 2022-01-02

Fixed

  • importType: avoid crashing on a non-string' (#2305, thanks @ljharb)
  • first: prevent crash when parsing angular templates (#2210, thanks @ljharb)
  • importType: properly resolve @/*-aliased imports as internal (#2334, thanks @ombene)
  • named/ExportMap: handle named imports from CJS modules that use dynamic import (#2341, thanks @ludofischer)

Changed

  • [no-default-import]: report on the token “default” instead of the entire node (#2299, thanks @pmcelhaney)
  • [Docs] order: Remove duplicate mention of default (#2280, thanks @johnthagen)
  • [Deps] update eslint-module-utils

2.25.3 - 2021-11-09

Fixed

Changed

2.25.2 - 2021-10-12

Fixed

  • [Deps] update eslint-module-utils for real this time (#2255, thanks @ljharb)

2.25.1 - 2021-10-11

Fixed

  • [Deps] update eslint-module-utils

2.25.0 - 2021-10-11

Added

Fixed

Changed

2.24.2 - 2021-08-24

Fixed

2.24.1 - 2021-08-19

Fixed

Changed

2.24.0 - 2021-08-08

Added

Fixed

Changed

2.23.4 - 2021-05-29

Fixed

2.23.3 - 2021-05-21

Fixed

Changed

  • [Docs] Add no-relative-packages to list of to the list of rules (#2075, thanks @arvigeus)

2.23.2 - 2021-05-15

Changed

  • [meta] add safe-publish-latest; use prepublishOnly script for npm 7+

2.23.1 - 2021-05-14

Fixed

2.23.0 - 2021-05-13

Added

Fixed

Changed

  • [Generic Import Callback] Make callback for all imports once in rules (#1237, thanks @ljqx)
  • [Docs] no-named-as-default: add semicolon (#1897, thanks @bicstone)
  • [Docs] no-extraneous-dependencies: correct peerDependencies option default to true (#1993, thanks @dwardu)
  • [Docs] order: Document options required to match ordering example ([#1992], thanks @silviogutierrez)
  • [Tests] no-unresolved: add tests for import() (#2012, thanks @davidbonnet)
  • [Docs] Add import/recommended ruleset to README (#2034, thanks @edemaine)

2.22.1 - 2020-09-27

Fixed

Changed

  • export: add tests for a name collision with export * from (#1704, thanks @tomprats)

2.22.0 - 2020-06-26

Added

Fixed

Changed

2.21.2 - 2020-06-09

Fixed

2.21.1 - 2020-06-07

Fixed

  • TypeScript: [import/named]: avoid requiring typescript when not using TS (#1805, thanks @ljharb)

2.21.0 - 2020-06-07

Added

Fixed

Changed

[2.20.2] - 2020-03-28

Fixed

2.20.1 - 2020-02-01

Fixed

Changed

2.20.0 - 2020-01-10

Added

Fixed

Docs

2.19.1 - 2019-12-08

Fixed

2.19.0 - 2019-12-08

Added

Fixed

Docs

Changed

2.18.2 - 2019-07-19

Fixed

2.18.1 - 2019-07-18

Fixed

Refactors

2.18.0 - 2019-06-24

Added

Fixed

Docs

2.17.3 - 2019-05-23

Fixed

Docs

2.17.2 - 2019-04-16

Fixed

2.17.1 - 2019-04-13

Fixed

  • require v2.4 of eslint-module-utils (#1322)

2.17.0 - 2019-04-13

Added

Fixed

Docs

Tests

2.16.0 - 2019-01-29

Added

Fixed

2.15.0 - 2019-01-22

Added

Fixed

2.14.0 - 2018-08-13

Added

Fixed

Refactors

  • add explicit support for RestElement alongside ExperimentalRestProperty (thanks @ljharb)

2.13.0 - 2018-06-24

Added

Fixed

  • namespace rule: ensure it works in eslint 5/ecmaVersion 2018 (thanks @ljharb)

2.12.0 - 2018-05-17

Added

2.11.0 - 2018-04-09

Added

Fixed

2.10.0 - 2018-03-29

Added

2.9.0 - 2018-02-21

Added

2.8.0 - 2017-10-18

Added

Changed

  • Case-sensitivity checking ignores working directory and ancestors. (#720 + #858, thanks @laysent)

Fixed

2.7.0 - 2017-07-06

Changed

2.6.1 - 2017-06-29

Fixed

  • update bundled node resolver dependency to latest version

2.6.0 - 2017-06-23

Changed

  • update tests / peerDeps for ESLint 4.0 compatibility (#871, thanks @mastilver)
  • memo-parser updated to require filePath on parser options as it melts down if it's not there, now that this plugin always provides it. (see #863)

2.5.0 - 2017-06-22

Re-releasing v2.4.0 after discovering that the memory leak is isolated to the memo-parser, which is more or less experimental anyway.

Added

2.4.0 - 2017-06-02 [YANKED]

Yanked due to critical issue in eslint-module-utils with cache key resulting from #839.

Added

2.3.0 - 2017-05-18

Added

Changed

Fixed

  • attempt to fix crash in no-mutable-exports. (#660)
  • “default is a reserved keyword” in no-maned-default tests by locking down babylon to 6.15.0 (#756, thanks @gmathieu)
  • support scoped modules containing non word characters

2.2.0 - 2016-11-07

Fixed

  • Corrected a few gaffs in the auto-ignore logic to fix major performance issues with projects that did not explicitly ignore node_modules. (#654)
  • import/ignore setting was only being respected if the ignored module didn't start with an import or export JS statement
  • prefer-default-export: fixed crash on export extensions (#653)

2.1.0 - 2016-11-02

Added

Fixed

2.0.1 - 2016-10-06

Fixed

  • Fixed code that relied on removed dependencies. (#604)

2.0.0! - 2016-09-30

Added

  • unambiguous rule: report modules that are not unambiguously ES modules.
  • recommended shared config. Roughly errors and warnings mixed together, with some parserOptions in the mix. (#402)
  • react shared config: added jsx: true to parserOptions.ecmaFeatures.
  • Added no-webpack-loader-syntax rule: forbid custom Webpack loader syntax in imports. (#586, thanks @fson!)
  • Add option newlines-between: "ignore" to order (#519)
  • Added no-unassigned-import rule (#529)

Breaking

Changed

  • imports-first is renamed to first. imports-first alias will continue to exist, but may be removed in a future major release.
  • Case-sensitivity: now specifically (and optionally) reported by no-unresolved. Other rules will ignore case-mismatches on paths on case-insensitive filesystems. (#311)

Fixed

1.16.0 - 2016-09-22

Added

Fixed

1.15.0 - 2016-09-12

Added

Fixed

1.14.0 - 2016-08-22

Added

  • import/parsers setting: parse some dependencies (i.e. TypeScript!) with a different parser than the ESLint-configured parser. (#503)

Fixed

  • namespace exception for get property from namespace import, which are re-export from commonjs module (#499 fixes #416, thanks @wKich)

1.13.0 - 2016-08-11

Added

  • allowComputed option for namespace rule. If set to true, won't report computed member references to namespaces. (see #456)

Changed

Fixed

1.12.0 - 2016-07-26

Added

1.11.1 - 2016-07-20

Fixed

1.11.0 - 2016-07-17

Added

Fixed

1.10.3 - 2016-07-08

Fixed

  • removing Symbol dependencies (i.e. for-of loops) due to Node 0.10 polyfill issue (see #415). Should not make any discernible semantic difference.

1.10.2 - 2016-07-04

Fixed

  • Something horrible happened during npm prepublish of 1.10.1. Several rm -rf node_modules && npm i and gulp clean && npm prepublishs later, it is rebuilt and republished as 1.10.2. Thanks @rhettlivingston for noticing and reporting!

1.10.1 - 2016-07-02 [YANKED]

Added

  • Officially support ESLint 3.x. (peerDependencies updated to 2.x - 3.x)

1.10.0 - 2016-06-30

Added

Fixed

  • Fixed crash with newline-after-import related to the use of switch cases. (fixes #386, thanks @ljharb for reporting) (#395)

1.9.2 - 2016-06-21

Fixed

1.9.1 - 2016-06-16

Fixed

  • Reordered precedence for loading resolvers. (#373)

1.9.0 - 2016-06-10

Added

Fixed

1.8.1 - 2016-05-23

Fixed

1.8.0 - 2016-05-11

Added

Fixed

1.7.0 - 2016-05-06

Added

Fixed

  • extensions: fallback to source path for extension enforcement if imported module is not resolved. Also, never report for builtins (i.e. path). (#296)

1.6.1 - 2016-04-28

Fixed

1.6.0 - 2016-04-25

Added

Changed

Fixed

  • named now properly ignores the source module if a name is re-exported from an ignored file (i.e. node_modules). Also improved the reported error. (thanks to @jimbolla for reporting)
  • no-named-as-default-member had a crash on destructuring in loops (thanks for heads up from @lemonmade)

1.5.0 - 2016-04-18

Added

Changed

  • Rearranged rule groups in README in preparation for more style guide rules

Removed

  • support for Node 0.10, via es6-* ponyfills. Using native Map/Set/Symbol.

1.4.0 - 2016-03-25

Added

  • Resolver plugin interface v2: more explicit response format that more clearly covers the found-but-core-module case, where there is no path. Still backwards-compatible with the original version of the resolver spec.
  • Resolver documentation

Changed

  • using package.json/files instead of .npmignore for package file inclusion (#228, thanks @mathieudutour)
  • using es6-* ponyfills instead of babel-runtime

1.3.0 - 2016-03-20

Major perf improvements. Between parsing only once and ignoring gigantic, non-module node_modules, there is very little added time.

My test project takes 17s to lint completely, down from 55s, when using the memoizing parser, and takes only 27s with naked babel-eslint (thus, reparsing local modules).

Added

  • This change log (#216)
  • Experimental memoizing parser

Fixed

  • Huge reduction in execution time by only ignoring import/ignore setting if something that looks like an export is detected in the module content.

1.2.0 - 2016-03-19

Thanks @lencioni for identifying a huge amount of rework in resolve and kicking off a bunch of memoization.

I'm seeing 62% improvement over my normal test codebase when executing only no-unresolved in isolation, and ~35% total reduction in lint time.

Changed

1.1.0 - 2016-03-15

Added

  • Added an ignore option to no-unresolved for those pesky files that no resolver can find. (still prefer enhancing the Webpack and Node resolvers to using it, though). See #89 for details.

1.0.4 - 2016-03-11

Changed

Fixed

  • don't crash on self references (#210)
  • correct cache behavior in eslint_d for deep namespaces (#200)

1.0.3 - 2016-02-26

Changed

  • no-deprecated follows deep namespaces (#191)

Fixed

  • namespace no longer flags modules with only a default export as having no names. (ns.default is valid ES6)

1.0.2 - 2016-02-26

Fixed

  • don't parse imports with no specifiers (#192)

1.0.1 - 2016-02-25

Fixed

  • export stage-0 shared config
  • documented no-deprecated
  • deep namespaces are traversed regardless of how they get imported (#189)

1.0.0 - 2016-02-24

Added

  • no-deprecated: WIP rule to let you know at lint time if you're using deprecated functions, constants, classes, or modules.

Changed

1.0.0-beta.0 - 2016-02-13

Changed

  • support for (only) ESLint 2.x
  • no longer needs/refers to import/parser or import/parse-options. Instead, ESLint provides the configured parser + options to the rules, and they use that to parse dependencies.

Removed

  • babylon as default import parser (see Breaking)

0.13.0 - 2016-02-08

Added

Removed

  • Removed vestigial no-require rule. no-commonjs is more complete.

0.12.2 - 2016-02-06 [YANKED]

Unpublished from npm and re-released as 0.13.0. See #170.

0.12.1 - 2015-12-17

Changed

  • Broke docs for rules out into individual files.

0.12.0 - 2015-12-14

Changed

  • Ignore import/ignore setting if exports are actually found in the parsed module. Does this to support use of jsnext:main in node_modules without the pain of managing an allow list or a nuanced deny list.

0.11.0 - 2015-11-27

Added

  • Resolver plugins. Now the linter can read Webpack config, properly follow aliases and ignore externals, dismisses inline loaders, etc. etc.!

Earlier releases (0.10.1 and younger)

See GitHub release notes for info on changes for earlier releases.