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.
69e0187 (HEAD -> master, source/master, origin/master, origin/HEAD) Merge pull request #1151 from jf248/jsx
|\e30a757 (source/pr/1151, fork/jsx) Add JSX check to namespace rule
|/8252344 (source/pr/1148) Add error to output when module loaded as resolver has invalid API
no-useless-path-segments: add commonJS (CJS) support (#1128, thanks @1pete)
no-cycle: ignore Flow imports (#1126, thanks @gajus)no-relative-parent-imports]: resolve paths (#1135, thanks @chrislloyd)import/order]: fix autofixer when using typescript-eslint-parser (#1137, thanks @justinanastos)no-relative-parent-imports] rule: disallow relative imports from parent directories (#1093, thanks @chrislloyd)namespace rule: ensure it works in eslint 5/ecmaVersion 2018 (thanks @ljharb)named rule (#931, thanks @mattijsbliek)no-useless-path-segments rule (#1068, thanks @manovotny)packageDir option for no-extraneous-dependencies can be array-valued (#1085, thanks @hulkish)firstallow-require option for no-commonjs rule (#880, thanks @futpib)group-exports rule: style-guide rule to report use of multiple named exports (#721, thanks @robertrossmann)no-self-import rule: forbids a module from importing itself. (#727, #449, #447, thanks @giodamelio).no-default-export rule (#889, thanks @isiahmeadows)no-useless-path-segments rule (#912, thanks @graingert and @danny-andrews)exports-last rule (#620 + #632, thanks @k15a)no-absolute-path picks up speed boost, optional AMD support (#843, thanks @jseminck)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)Re-releasing v2.4.0 after discovering that the memory leak is isolated to the memo-parser,
which is more or less experimental anyway.
Yanked due to critical issue in eslint-module-utils with cache key resulting from #839.
filePath into parserOptions passed to parser (#839, thanks @sompylasar)allow option to no-unassigned-import to allow for files that match the globs (#671, #737, thanks @kevin940726).no-anonymous-default-export rule: report anonymous default exports (#712, thanks @duncanbeevers).order's newlines-between option to allow newlines inside import groups (#627, #628, thanks @giodamelio)count option to the newline-after-import rule to allow configuration of number of newlines expected (#742, thanks @ntdb)no-extraneous-dependencies: use read-pkg-up to simplify finding + loading package.json (#680, thanks @wtgtybhertgeghgtwtg)no-extraneous-dependenciesno-mutable-exports. (#660)node_modules. (#654)import/ignore setting was only being respected if the ignored module didn't start with
an import or export JS statementprefer-default-export: fixed crash on export extensions (#653)no-named-default rule: style-guide rule to report use of unnecessarily named default imports (#596, thanks @ntdb)no-extraneous-dependencies: check globs against CWD + absolute path (#602 + #630, thanks @ljharb)prefer-default-export handles flow export type (#484 + #639, thanks @jakubsta)prefer-default-export handles re-exported default exports (#609)newline-after-import with decorators (#592)newline-after-import when next line is a decoratororder rule (#601)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.no-webpack-loader-syntax rule: forbid custom Webpack loader syntax in imports. (#586, thanks @fson!)newlines-between: "ignore" to orderno-unassigned-import rule (#529)import/extensions setting defaults to ['.js']. (#306)import/ignore setting defaults to nothing, and ambiguous modules are ignored natively. This means importing from CommonJS modules will no longer be reported by default, named, or namespace, regardless of import/ignore. (#270)newline-after-import: Removed need for an empty line after an inline require call (#570)order: Default value for newlines-between option is now ignore (#519)imports-first is renamed to first. imports-first alias will continue to
exist, but may be removed in a future major release.no-unresolved.
Other rules will ignore case-mismatches on paths on case-insensitive filesystems. (#311)no-internal-modules: support @-scoped packages (#577+#578, thanks @spalger)no-dynamic-require rule: forbid require() calls with expressions. (#567, #568)no-internal-modules rule: restrict deep package imports to specific folders. (#485, thanks @spalger!)extensions: allow override of a chosen default with options object (#555, thanks @ljharb!)no-named-as-default no longer false-positives on export default from '...' (#566, thanks @preco21)default: allow re-export of values from ignored files as default (#545, thanks @skyrpex)allow option to no-nodejs-modules to allow exceptions (#452, #509).no-absolute-path rule (#530, #538)max-dependencies for specifying the maximum number of dependencies (both import and require) a module can have. (see #489, thanks @tizmagik)no-extraneous-dependencies, after much bikeshedding. Thanks, @knpwrs! (#527)no-named-as-default-member Allow default import to have a property named "default" (#507, #508, thanks @jquense for both!)import/parsers setting: parse some dependencies (i.e. TypeScript!) with a different parser than the ESLint-configured parser. (#503)namespace exception for get property from namespace import, which are re-export from commonjs module (#499 fixes #416, thanks @wKich)allowComputed option for namespace rule. If set to true, won't report
computed member references to namespaces. (see #456)no-nodejs-modules error message to include the module's name (#453, #461)import/extensions setting is respected in spite of the appearance of imports
in an imported file. (fixes #478, thanks @rhys-vdw)import/external-module-folders setting: a possibility to configure folders for "external" modules (#444, thanks @zloirock)newline-after-import exception for switch branches with requires iff parsed as sourceType:'module'.
(still #441, thanks again @ljharb)peerDependencies option to no-extraneous-dependencies to allow/forbid peer dependencies (#423, #428, thanks @jfmengels!).newline-after-import exception for multiple requires in an arrow
function expression (e.g. () => require('a') || require('b')). (#441, thanks @ljharb)Symbol dependencies (i.e. for-of loops) due to Node 0.10 polyfill
issue (see #415). Should not make any discernible semantic difference.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!2.x - 3.x)no-restricted-paths. (#155/#371, thanks @lo1tuma)import/core-modules setting: allow configuration of additional module names,
to be treated as builtin modules (a la path, etc. in Node). (#275 + #365, thanks @sindresorhus for driving)newline-after-import related to the use of switch cases. (fixes #386, thanks @ljharb for reporting) (#395)export and no-deprecated rules. (#348, #370)no-deprecated. (#321, thanks @josh)prefer-default-export handles export function and export const in same file (#359, thanks @scottnonnenberg)export * from 'foo' now properly ignores a default export from foo, if any. (#328/#332, thanks @jkimbo)
This impacts all static analysis of imported names. (default, named, namespace, export)order's newline-between option handle multiline import statements (#313, thanks @singles)order's newline-between option handle not assigned import statements (#313, thanks @singles)order's newline-between option ignore require statements inside object literals (#313, thanks @singles)prefer-default-export properly handles deep destructuring, export * from ..., and files with no exports. (#342+#343, thanks @scottnonnenberg)prefer-default-export, new rule. (#308, thanks @gavriguy)no-mutable-exports. (#317, fixed by #322. thanks @borisyankov + @jfmengels)no-extraneous-dependencies handle scoped packages (#316, thanks @jfmengels)newline-after-import, new rule. (#245, thanks @singles)optionalDependencies option to no-extraneous-dependencies to allow/forbid optional dependencies (#266, thanks @jfmengels).newlines-between option to order rule (#298, thanks @singles)no-mutable-exports rule (#290, thanks @josh)import/extensions setting: a list of file extensions to parse as modules
and search for exports. If unspecified, all extensions are considered valid (for now).
In v2, this will likely default to ['.js', MODULE_EXT]. (#297, to fix #267)extensions: fallback to source path for extension enforcement if imported
module is not resolved. Also, never report for builtins (i.e. path). (#296)no-named-as-default-member: don't crash on rest props. (#281, thanks @SimenB)null to path functions.
Thanks to @strawbrary for bringing this up (#272) and adding OSX support to the Travis
config (#288).no-named-as-default-member to warnings canned configno-extraneous-dependencies rule (#241, thanks @jfmengels)extensions rule (#250, thanks @lo1tuma)no-nodejs-modules rule (#261, thanks @jfmengels)order rule (#247, thanks @jfmengels)resolve.fallback config option in the webpack resolver (#254)imports-first now allows directives (i.e. 'use strict') strictly before
any imports (#256, thanks @lemonmade)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)no-namespace rule (#239, thanks @singles)no-named-as-default-member rule (#243, thanks @dmnd)es6-* ponyfills. Using native Map/Set/Symbol.package.json/files instead of .npmignore for package file inclusion (#228, thanks @mathieudutour)es6-* ponyfills instead of babel-runtimeMajor 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).
import/ignore setting if
something that looks like an export is detected in the module content.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.
import/cache settingignore 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.namespace/no-deprecated) (#211)namespace no longer flags modules with only a default export as having no
names. (ns.default is valid ES6)stage-0 shared configno-deprecatedno-deprecated: WIP rule to let you know at lint time if you're using
deprecated functions, constants, classes, or modules.import/parser or import/parse-options. Instead,
ESLint provides the configured parser + options to the rules, and they use that
to parse dependencies.babylon as default import parser (see Breaking)no-commonjs ruleno-amd ruleno-require rule. no-commonjs is more complete.Unpublished from npm and re-released as 0.13.0. See #170.
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.See GitHub release notes for info on changes for earlier releases.