選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

CHANGELOG.md 38 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769
  1. # Change Log
  2. All notable changes to this project will be documented in this file.
  3. This project adheres to [Semantic Versioning](http://semver.org/).
  4. This change log adheres to standards from [Keep a CHANGELOG](http://keepachangelog.com).
  5. ## [Unreleased]
  6. ## [2.14.0] - 2018-08-13
  7. * 69e0187 (HEAD -> master, source/master, origin/master, origin/HEAD) Merge pull request #1151 from jf248/jsx
  8. |\
  9. | * e30a757 (source/pr/1151, fork/jsx) Add JSX check to namespace rule
  10. |/
  11. * 8252344 (source/pr/1148) Add error to output when module loaded as resolver has invalid API
  12. ### Added
  13. - [`no-useless-path-segments`]: add commonJS (CJS) support ([#1128], thanks [@1pete])
  14. - [`namespace`]: add JSX check ([#1151], thanks [@jf248])
  15. ### Fixed
  16. - [`no-cycle`]: ignore Flow imports ([#1126], thanks [@gajus])
  17. - fix Flow type imports ([#1106], thanks [@syymza])
  18. - [`no-relative-parent-imports`]: resolve paths ([#1135], thanks [@chrislloyd])
  19. - [`import/order`]: fix autofixer when using typescript-eslint-parser ([#1137], thanks [@justinanastos])
  20. - repeat fix from [#797] for [#717], in another place (thanks [@ljharb])
  21. ### Refactors
  22. - add explicit support for RestElement alongside ExperimentalRestProperty (thanks [@ljharb])
  23. ## [2.13.0] - 2018-06-24
  24. ### Added
  25. - Add ESLint 5 support ([#1122], thanks [@ai] and [@ljharb])
  26. - Add [`no-relative-parent-imports`] rule: disallow relative imports from parent directories ([#1093], thanks [@chrislloyd])
  27. ### Fixed
  28. - `namespace` rule: ensure it works in eslint 5/ecmaVersion 2018 (thanks [@ljharb])
  29. ## [2.12.0] - 2018-05-17
  30. ### Added
  31. - Ignore type imports for [`named`] rule ([#931], thanks [@mattijsbliek])
  32. - Add documentation for [`no-useless-path-segments`] rule ([#1068], thanks [@manovotny])
  33. - `packageDir` option for [`no-extraneous-dependencies`] can be array-valued ([#1085], thanks [@hulkish])
  34. ## [2.11.0] - 2018-04-09
  35. ### Added
  36. - Fixer for [`first`] ([#1046], thanks [@fengkfengk])
  37. - `allow-require` option for [`no-commonjs`] rule ([#880], thanks [@futpib])
  38. ### Fixed
  39. - memory/CPU regression where ASTs were held in memory ([#1058], thanks [@klimashkin]/[@lukeapage])
  40. ## [2.10.0] - 2018-03-29
  41. ### Added
  42. - Autofixer for [`order`] rule ([#908], thanks [@tihonove])
  43. - Add [`no-cycle`] rule: reports import cycles.
  44. ## [2.9.0] - 2018-02-21
  45. ### Added
  46. - Add [`group-exports`] rule: style-guide rule to report use of multiple named exports ([#721], thanks [@robertrossmann])
  47. - Add [`no-self-import`] rule: forbids a module from importing itself. ([#727], [#449], [#447], thanks [@giodamelio]).
  48. - Add [`no-default-export`] rule ([#889], thanks [@isiahmeadows])
  49. - Add [`no-useless-path-segments`] rule ([#912], thanks [@graingert] and [@danny-andrews])
  50. - ... and more! check the commits for v[2.9.0]
  51. ## [2.8.0] - 2017-10-18
  52. ### Added
  53. - [`exports-last`] rule ([#620] + [#632], thanks [@k15a])
  54. ### Changed
  55. - Case-sensitivity checking ignores working directory and ancestors. ([#720] + [#858], thanks [@laysent])
  56. ### Fixed
  57. - support scoped modules containing hyphens ([#744], thanks [@rosswarren])
  58. - core-modules now resolves files inside declared modules ([#886] / [#891], thanks [@mplewis])
  59. - TypeError for missing AST fields from TypeScript ([#842] / [#944], thanks [@alexgorbatchev])
  60. ## [2.7.0] - 2017-07-06
  61. ### Changed
  62. - [`no-absolute-path`] picks up speed boost, optional AMD support ([#843], thanks [@jseminck])
  63. ## [2.6.1] - 2017-06-29
  64. ### Fixed
  65. - update bundled node resolver dependency to latest version
  66. ## [2.6.0] - 2017-06-23
  67. ### Changed
  68. - update tests / peerDeps for ESLint 4.0 compatibility ([#871], thanks [@mastilver])
  69. - [`memo-parser`] updated to require `filePath` on parser options as it melts
  70. down if it's not there, now that this plugin always provides it. (see [#863])
  71. ## [2.5.0] - 2017-06-22
  72. Re-releasing v[2.4.0] after discovering that the memory leak is isolated to the [`memo-parser`],
  73. which is more or less experimental anyway.
  74. ### Added
  75. - Autofixer for newline-after-import. ([#686] + [#696], thanks [@eelyafi])
  76. ## [2.4.0] - 2017-06-02 [YANKED]
  77. Yanked due to critical issue in eslint-module-utils with cache key resulting from [#839].
  78. ### Added
  79. - Add `filePath` into `parserOptions` passed to `parser` ([#839], thanks [@sompylasar])
  80. - Add `allow` option to [`no-unassigned-import`] to allow for files that match the globs ([#671], [#737], thanks [@kevin940726]).
  81. ## [2.3.0] - 2017-05-18
  82. ### Added
  83. - [`no-anonymous-default-export`] rule: report anonymous default exports ([#712], thanks [@duncanbeevers]).
  84. - Add new value to [`order`]'s `newlines-between` option to allow newlines inside import groups ([#627], [#628], thanks [@giodamelio])
  85. - Add `count` option to the [`newline-after-import`] rule to allow configuration of number of newlines expected ([#742], thanks [@ntdb])
  86. ### Changed
  87. - [`no-extraneous-dependencies`]: use `read-pkg-up` to simplify finding + loading `package.json` ([#680], thanks [@wtgtybhertgeghgtwtg])
  88. - Add support to specify the package.json [`no-extraneous-dependencies`] ([#685], thanks [@ramasilveyra])
  89. ### Fixed
  90. - attempt to fix crash in [`no-mutable-exports`]. ([#660])
  91. - "default is a reserved keyword" in no-maned-default tests by locking down babylon to 6.15.0 (#756, thanks @gmathieu)
  92. - support scoped modules containing non word characters
  93. ## [2.2.0] - 2016-11-07
  94. ### Fixed
  95. - Corrected a few gaffs in the auto-ignore logic to fix major performance issues
  96. with projects that did not explicitly ignore `node_modules`. ([#654])
  97. - [`import/ignore` setting] was only being respected if the ignored module didn't start with
  98. an `import` or `export` JS statement
  99. - [`prefer-default-export`]: fixed crash on export extensions ([#653])
  100. ## [2.1.0] - 2016-11-02
  101. ### Added
  102. - Add [`no-named-default`] rule: style-guide rule to report use of unnecessarily named default imports ([#596], thanks [@ntdb])
  103. - [`no-extraneous-dependencies`]: check globs against CWD + absolute path ([#602] + [#630], thanks [@ljharb])
  104. ### Fixed
  105. - [`prefer-default-export`] handles flow `export type` ([#484] + [#639], thanks [@jakubsta])
  106. - [`prefer-default-export`] handles re-exported default exports ([#609])
  107. - Fix crash when using [`newline-after-import`] with decorators ([#592])
  108. - Properly report [`newline-after-import`] when next line is a decorator
  109. - Fixed documentation for the default values for the [`order`] rule ([#601])
  110. ## [2.0.1] - 2016-10-06
  111. ### Fixed
  112. - Fixed code that relied on removed dependencies. ([#604])
  113. ## [2.0.0]! - 2016-09-30
  114. ### Added
  115. - [`unambiguous`] rule: report modules that are not unambiguously ES modules.
  116. - `recommended` shared config. Roughly `errors` and `warnings` mixed together,
  117. with some `parserOptions` in the mix. ([#402])
  118. - `react` shared config: added `jsx: true` to `parserOptions.ecmaFeatures`.
  119. - Added [`no-webpack-loader-syntax`] rule: forbid custom Webpack loader syntax in imports. ([#586], thanks [@fson]!)
  120. - Add option `newlines-between: "ignore"` to [`order`] ([#519])
  121. - Added [`no-unassigned-import`] rule ([#529])
  122. ### Breaking
  123. - [`import/extensions` setting] defaults to `['.js']`. ([#306])
  124. - [`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])
  125. - [`newline-after-import`]: Removed need for an empty line after an inline `require` call ([#570])
  126. - [`order`]: Default value for `newlines-between` option is now `ignore` ([#519])
  127. ### Changed
  128. - `imports-first` is renamed to [`first`]. `imports-first` alias will continue to
  129. exist, but may be removed in a future major release.
  130. - Case-sensitivity: now specifically (and optionally) reported by [`no-unresolved`].
  131. Other rules will ignore case-mismatches on paths on case-insensitive filesystems. ([#311])
  132. ### Fixed
  133. - [`no-internal-modules`]: support `@`-scoped packages ([#577]+[#578], thanks [@spalger])
  134. ## [1.16.0] - 2016-09-22
  135. ### Added
  136. - Added [`no-dynamic-require`] rule: forbid `require()` calls with expressions. ([#567], [#568])
  137. - Added [`no-internal-modules`] rule: restrict deep package imports to specific folders. ([#485], thanks [@spalger]!)
  138. - [`extensions`]: allow override of a chosen default with options object ([#555], thanks [@ljharb]!)
  139. ### Fixed
  140. - [`no-named-as-default`] no longer false-positives on `export default from '...'` ([#566], thanks [@preco21])
  141. - [`default`]: allow re-export of values from ignored files as default ([#545], thanks [@skyrpex])
  142. ## [1.15.0] - 2016-09-12
  143. ### Added
  144. - Added an `allow` option to [`no-nodejs-modules`] to allow exceptions ([#452], [#509]).
  145. - Added [`no-absolute-path`] rule ([#530], [#538])
  146. - [`max-dependencies`] for specifying the maximum number of dependencies (both `import` and `require`) a module can have. (see [#489], thanks [@tizmagik])
  147. - Added glob option to config for [`no-extraneous-dependencies`], after much bikeshedding. Thanks, [@knpwrs]! ([#527])
  148. ### Fixed
  149. - [`no-named-as-default-member`] Allow default import to have a property named "default" ([#507], [#508], thanks [@jquense] for both!)
  150. ## [1.14.0] - 2016-08-22
  151. ### Added
  152. - [`import/parsers` setting]: parse some dependencies (i.e. TypeScript!) with a different parser than the ESLint-configured parser. ([#503])
  153. ### Fixed
  154. - [`namespace`] exception for get property from `namespace` import, which are re-export from commonjs module ([#499] fixes [#416], thanks [@wKich])
  155. ## [1.13.0] - 2016-08-11
  156. ### Added
  157. - `allowComputed` option for [`namespace`] rule. If set to `true`, won't report
  158. computed member references to namespaces. (see [#456])
  159. ### Changed
  160. - Modified [`no-nodejs-modules`] error message to include the module's name ([#453], [#461])
  161. ### Fixed
  162. - [`import/extensions` setting] is respected in spite of the appearance of imports
  163. in an imported file. (fixes [#478], thanks [@rhys-vdw])
  164. ## [1.12.0] - 2016-07-26
  165. ### Added
  166. - [`import/external-module-folders` setting]: a possibility to configure folders for "external" modules ([#444], thanks [@zloirock])
  167. ## [1.11.1] - 2016-07-20
  168. ### Fixed
  169. - [`newline-after-import`] exception for `switch` branches with `require`s iff parsed as `sourceType:'module'`.
  170. (still [#441], thanks again [@ljharb])
  171. ## [1.11.0] - 2016-07-17
  172. ### Added
  173. - Added an `peerDependencies` option to [`no-extraneous-dependencies`] to allow/forbid peer dependencies ([#423], [#428], thanks [@jfmengels]!).
  174. ### Fixed
  175. - [`newline-after-import`] exception for multiple `require`s in an arrow
  176. function expression (e.g. `() => require('a') || require('b')`). ([#441], thanks [@ljharb])
  177. ## [1.10.3] - 2016-07-08
  178. ### Fixed
  179. - removing `Symbol` dependencies (i.e. `for-of` loops) due to Node 0.10 polyfill
  180. issue (see [#415]). Should not make any discernible semantic difference.
  181. ## [1.10.2] - 2016-07-04
  182. ### Fixed
  183. - Something horrible happened during `npm prepublish` of 1.10.1.
  184. Several `rm -rf node_modules && npm i` and `gulp clean && npm prepublish`s later, it is rebuilt and republished as 1.10.2. Thanks [@rhettlivingston] for noticing and reporting!
  185. ## [1.10.1] - 2016-07-02 [YANKED]
  186. ### Added
  187. - Officially support ESLint 3.x. (peerDependencies updated to `2.x - 3.x`)
  188. ## [1.10.0] - 2016-06-30
  189. ### Added
  190. - Added new rule [`no-restricted-paths`]. ([#155]/[#371], thanks [@lo1tuma])
  191. - [`import/core-modules` setting]: allow configuration of additional module names,
  192. to be treated as builtin modules (a la `path`, etc. in Node). ([#275] + [#365], thanks [@sindresorhus] for driving)
  193. - React Native shared config (based on comment from [#283])
  194. ### Fixed
  195. - Fixed crash with `newline-after-import` related to the use of switch cases. (fixes [#386], thanks [@ljharb] for reporting) ([#395])
  196. ## [1.9.2] - 2016-06-21
  197. ### Fixed
  198. - Issues with ignored/CJS files in [`export`] and [`no-deprecated`] rules. ([#348], [#370])
  199. ## [1.9.1] - 2016-06-16
  200. ### Fixed
  201. - Reordered precedence for loading resolvers. ([#373])
  202. ## [1.9.0] - 2016-06-10
  203. ### Added
  204. - Added support TomDoc comments to [`no-deprecated`]. ([#321], thanks [@josh])
  205. - Added support for loading custom resolvers ([#314], thanks [@le0nik])
  206. ### Fixed
  207. - [`prefer-default-export`] handles `export function` and `export const` in same file ([#359], thanks [@scottnonnenberg])
  208. ## [1.8.1] - 2016-05-23
  209. ### Fixed
  210. - `export * from 'foo'` now properly ignores a `default` export from `foo`, if any. ([#328]/[#332], thanks [@jkimbo])
  211. This impacts all static analysis of imported names. ([`default`], [`named`], [`namespace`], [`export`])
  212. - Make [`order`]'s `newline-between` option handle multiline import statements ([#313], thanks [@singles])
  213. - Make [`order`]'s `newline-between` option handle not assigned import statements ([#313], thanks [@singles])
  214. - Make [`order`]'s `newline-between` option ignore `require` statements inside object literals ([#313], thanks [@singles])
  215. - [`prefer-default-export`] properly handles deep destructuring, `export * from ...`, and files with no exports. ([#342]+[#343], thanks [@scottnonnenberg])
  216. ## [1.8.0] - 2016-05-11
  217. ### Added
  218. - [`prefer-default-export`], new rule. ([#308], thanks [@gavriguy])
  219. ### Fixed
  220. - Ignore namespace / ES7 re-exports in [`no-mutable-exports`]. ([#317], fixed by [#322]. thanks [@borisyankov] + [@jfmengels])
  221. - Make [`no-extraneous-dependencies`] handle scoped packages ([#316], thanks [@jfmengels])
  222. ## [1.7.0] - 2016-05-06
  223. ### Added
  224. - [`newline-after-import`], new rule. ([#245], thanks [@singles])
  225. - Added an `optionalDependencies` option to [`no-extraneous-dependencies`] to allow/forbid optional dependencies ([#266], thanks [@jfmengels]).
  226. - Added `newlines-between` option to [`order`] rule ([#298], thanks [@singles])
  227. - add [`no-mutable-exports`] rule ([#290], thanks [@josh])
  228. - [`import/extensions` setting]: a list of file extensions to parse as modules
  229. and search for `export`s. If unspecified, all extensions are considered valid (for now).
  230. In v2, this will likely default to `['.js', MODULE_EXT]`. ([#297], to fix [#267])
  231. ### Fixed
  232. - [`extensions`]: fallback to source path for extension enforcement if imported
  233. module is not resolved. Also, never report for builtins (i.e. `path`). ([#296])
  234. ## [1.6.1] - 2016-04-28
  235. ### Fixed
  236. - [`no-named-as-default-member`]: don't crash on rest props. ([#281], thanks [@SimenB])
  237. - support for Node 6: don't pass `null` to `path` functions.
  238. Thanks to [@strawbrary] for bringing this up ([#272]) and adding OSX support to the Travis
  239. config ([#288]).
  240. ## [1.6.0] - 2016-04-25
  241. ### Added
  242. - add [`no-named-as-default-member`] to `warnings` canned config
  243. - add [`no-extraneous-dependencies`] rule ([#241], thanks [@jfmengels])
  244. - add [`extensions`] rule ([#250], thanks [@lo1tuma])
  245. - add [`no-nodejs-modules`] rule ([#261], thanks [@jfmengels])
  246. - add [`order`] rule ([#247], thanks [@jfmengels])
  247. - consider `resolve.fallback` config option in the webpack resolver ([#254])
  248. ### Changed
  249. - [`imports-first`] now allows directives (i.e. `'use strict'`) strictly before
  250. any imports ([#256], thanks [@lemonmade])
  251. ### Fixed
  252. - [`named`] now properly ignores the source module if a name is re-exported from
  253. an ignored file (i.e. `node_modules`). Also improved the reported error. (thanks to [@jimbolla] for reporting)
  254. - [`no-named-as-default-member`] had a crash on destructuring in loops (thanks for heads up from [@lemonmade])
  255. ## [1.5.0] - 2016-04-18
  256. ### Added
  257. - report resolver errors at the top of the linted file
  258. - add [`no-namespace`] rule ([#239], thanks [@singles])
  259. - add [`no-named-as-default-member`] rule ([#243], thanks [@dmnd])
  260. ### Changed
  261. - Rearranged rule groups in README in preparation for more style guide rules
  262. ### Removed
  263. - support for Node 0.10, via `es6-*` ponyfills. Using native Map/Set/Symbol.
  264. ## [1.4.0] - 2016-03-25
  265. ### Added
  266. - Resolver plugin interface v2: more explicit response format that more clearly covers the found-but-core-module case, where there is no path.
  267. Still backwards-compatible with the original version of the resolver spec.
  268. - [Resolver documentation](./resolvers/README.md)
  269. ### Changed
  270. - using `package.json/files` instead of `.npmignore` for package file inclusion ([#228], thanks [@mathieudutour])
  271. - using `es6-*` ponyfills instead of `babel-runtime`
  272. ## [1.3.0] - 2016-03-20
  273. Major perf improvements. Between parsing only once and ignoring gigantic, non-module `node_modules`,
  274. there is very little added time.
  275. My test project takes 17s to lint completely, down from 55s, when using the
  276. memoizing parser, and takes only 27s with naked `babel-eslint` (thus, reparsing local modules).
  277. ### Added
  278. - This change log ([#216])
  279. - Experimental memoizing [parser](./memo-parser/README.md)
  280. ### Fixed
  281. - Huge reduction in execution time by _only_ ignoring [`import/ignore` setting] if
  282. something that looks like an `export` is detected in the module content.
  283. ## [1.2.0] - 2016-03-19
  284. Thanks @lencioni for identifying a huge amount of rework in resolve and kicking
  285. off a bunch of memoization.
  286. I'm seeing 62% improvement over my normal test codebase when executing only
  287. [`no-unresolved`] in isolation, and ~35% total reduction in lint time.
  288. ### Changed
  289. - added caching to core/resolve via [#214], configured via [`import/cache` setting]
  290. ## [1.1.0] - 2016-03-15
  291. ### Added
  292. - Added an [`ignore`](./docs/rules/no-unresolved.md#ignore) option to [`no-unresolved`] for those pesky files that no
  293. resolver can find. (still prefer enhancing the Webpack and Node resolvers to
  294. using it, though). See [#89] for details.
  295. ## [1.0.4] - 2016-03-11
  296. ### Changed
  297. - respect hoisting for deep namespaces ([`namespace`]/[`no-deprecated`]) ([#211])
  298. ### Fixed
  299. - don't crash on self references ([#210])
  300. - correct cache behavior in `eslint_d` for deep namespaces ([#200])
  301. ## [1.0.3] - 2016-02-26
  302. ### Changed
  303. - no-deprecated follows deep namespaces ([#191])
  304. ### Fixed
  305. - [`namespace`] no longer flags modules with only a default export as having no
  306. names. (ns.default is valid ES6)
  307. ## [1.0.2] - 2016-02-26
  308. ### Fixed
  309. - don't parse imports with no specifiers ([#192])
  310. ## [1.0.1] - 2016-02-25
  311. ### Fixed
  312. - export `stage-0` shared config
  313. - documented [`no-deprecated`]
  314. - deep namespaces are traversed regardless of how they get imported ([#189])
  315. ## [1.0.0] - 2016-02-24
  316. ### Added
  317. - [`no-deprecated`]: WIP rule to let you know at lint time if you're using
  318. deprecated functions, constants, classes, or modules.
  319. ### Changed
  320. - [`namespace`]: support deep namespaces ([#119] via [#157])
  321. ## [1.0.0-beta.0] - 2016-02-13
  322. ### Changed
  323. - support for (only) ESLint 2.x
  324. - no longer needs/refers to `import/parser` or `import/parse-options`. Instead,
  325. ESLint provides the configured parser + options to the rules, and they use that
  326. to parse dependencies.
  327. ### Removed
  328. - `babylon` as default import parser (see Breaking)
  329. ## [0.13.0] - 2016-02-08
  330. ### Added
  331. - [`no-commonjs`] rule
  332. - [`no-amd`] rule
  333. ### Removed
  334. - Removed vestigial `no-require` rule. [`no-commonjs`] is more complete.
  335. ## [0.12.2] - 2016-02-06 [YANKED]
  336. Unpublished from npm and re-released as 0.13.0. See [#170].
  337. ## [0.12.1] - 2015-12-17
  338. ### Changed
  339. - Broke docs for rules out into individual files.
  340. ## [0.12.0] - 2015-12-14
  341. ### Changed
  342. - Ignore [`import/ignore` setting] if exports are actually found in the parsed module. Does
  343. this to support use of `jsnext:main` in `node_modules` without the pain of
  344. managing an allow list or a nuanced deny list.
  345. ## [0.11.0] - 2015-11-27
  346. ### Added
  347. - Resolver plugins. Now the linter can read Webpack config, properly follow
  348. aliases and ignore externals, dismisses inline loaders, etc. etc.!
  349. ## Earlier releases (0.10.1 and younger)
  350. See [GitHub release notes](https://github.com/benmosher/eslint-plugin-import/releases?after=v0.11.0)
  351. for info on changes for earlier releases.
  352. [`import/cache` setting]: ./README.md#importcache
  353. [`import/ignore` setting]: ./README.md#importignore
  354. [`import/extensions` setting]: ./README.md#importextensions
  355. [`import/parsers` setting]: ./README.md#importparsers
  356. [`import/core-modules` setting]: ./README.md#importcore-modules
  357. [`import/external-module-folders` setting]: ./README.md#importexternal-module-folders
  358. [`no-unresolved`]: ./docs/rules/no-unresolved.md
  359. [`no-deprecated`]: ./docs/rules/no-deprecated.md
  360. [`no-commonjs`]: ./docs/rules/no-commonjs.md
  361. [`no-amd`]: ./docs/rules/no-amd.md
  362. [`namespace`]: ./docs/rules/namespace.md
  363. [`no-namespace`]: ./docs/rules/no-namespace.md
  364. [`no-named-default`]: ./docs/rules/no-named-default.md
  365. [`no-named-as-default`]: ./docs/rules/no-named-as-default.md
  366. [`no-named-as-default-member`]: ./docs/rules/no-named-as-default-member.md
  367. [`no-extraneous-dependencies`]: ./docs/rules/no-extraneous-dependencies.md
  368. [`extensions`]: ./docs/rules/extensions.md
  369. [`first`]: ./docs/rules/first.md
  370. [`imports-first`]: ./docs/rules/first.md
  371. [`no-nodejs-modules`]: ./docs/rules/no-nodejs-modules.md
  372. [`order`]: ./docs/rules/order.md
  373. [`named`]: ./docs/rules/named.md
  374. [`default`]: ./docs/rules/default.md
  375. [`export`]: ./docs/rules/export.md
  376. [`newline-after-import`]: ./docs/rules/newline-after-import.md
  377. [`no-mutable-exports`]: ./docs/rules/no-mutable-exports.md
  378. [`prefer-default-export`]: ./docs/rules/prefer-default-export.md
  379. [`no-restricted-paths`]: ./docs/rules/no-restricted-paths.md
  380. [`no-absolute-path`]: ./docs/rules/no-absolute-path.md
  381. [`max-dependencies`]: ./docs/rules/max-dependencies.md
  382. [`no-internal-modules`]: ./docs/rules/no-internal-modules.md
  383. [`no-dynamic-require`]: ./docs/rules/no-dynamic-require.md
  384. [`no-webpack-loader-syntax`]: ./docs/rules/no-webpack-loader-syntax.md
  385. [`no-unassigned-import`]: ./docs/rules/no-unassigned-import.md
  386. [`unambiguous`]: ./docs/rules/unambiguous.md
  387. [`no-anonymous-default-export`]: ./docs/rules/no-anonymous-default-export.md
  388. [`exports-last`]: ./docs/rules/exports-last.md
  389. [`group-exports`]: ./docs/rules/group-exports.md
  390. [`no-self-import`]: ./docs/rules/no-self-import.md
  391. [`no-default-export`]: ./docs/rules/no-default-export.md
  392. [`no-useless-path-segments`]: ./docs/rules/no-useless-path-segments.md
  393. [`no-cycle`]: ./docs/rules/no-cycle.md
  394. [`memo-parser`]: ./memo-parser/README.md
  395. [#1151]: https://github.com/benmosher/eslint-plugin-import/pull/1151
  396. [#1137]: https://github.com/benmosher/eslint-plugin-import/pull/1137
  397. [#1135]: https://github.com/benmosher/eslint-plugin-import/pull/1135
  398. [#1128]: https://github.com/benmosher/eslint-plugin-import/pull/1128
  399. [#1126]: https://github.com/benmosher/eslint-plugin-import/pull/1126
  400. [#1122]: https://github.com/benmosher/eslint-plugin-import/pull/1122
  401. [#1106]: https://github.com/benmosher/eslint-plugin-import/pull/1106
  402. [#1093]: https://github.com/benmosher/eslint-plugin-import/pull/1093
  403. [#1085]: https://github.com/benmosher/eslint-plugin-import/pull/1085
  404. [#1068]: https://github.com/benmosher/eslint-plugin-import/pull/1068
  405. [#1046]: https://github.com/benmosher/eslint-plugin-import/pull/1046
  406. [#944]: https://github.com/benmosher/eslint-plugin-import/pull/944
  407. [#908]: https://github.com/benmosher/eslint-plugin-import/pull/908
  408. [#891]: https://github.com/benmosher/eslint-plugin-import/pull/891
  409. [#889]: https://github.com/benmosher/eslint-plugin-import/pull/889
  410. [#880]: https://github.com/benmosher/eslint-plugin-import/pull/880
  411. [#858]: https://github.com/benmosher/eslint-plugin-import/pull/858
  412. [#843]: https://github.com/benmosher/eslint-plugin-import/pull/843
  413. [#871]: https://github.com/benmosher/eslint-plugin-import/pull/871
  414. [#797]: https://github.com/benmosher/eslint-plugin-import/pull/797
  415. [#744]: https://github.com/benmosher/eslint-plugin-import/pull/744
  416. [#742]: https://github.com/benmosher/eslint-plugin-import/pull/742
  417. [#737]: https://github.com/benmosher/eslint-plugin-import/pull/737
  418. [#727]: https://github.com/benmosher/eslint-plugin-import/pull/727
  419. [#721]: https://github.com/benmosher/eslint-plugin-import/pull/721
  420. [#712]: https://github.com/benmosher/eslint-plugin-import/pull/712
  421. [#696]: https://github.com/benmosher/eslint-plugin-import/pull/696
  422. [#685]: https://github.com/benmosher/eslint-plugin-import/pull/685
  423. [#680]: https://github.com/benmosher/eslint-plugin-import/pull/680
  424. [#654]: https://github.com/benmosher/eslint-plugin-import/pull/654
  425. [#639]: https://github.com/benmosher/eslint-plugin-import/pull/639
  426. [#632]: https://github.com/benmosher/eslint-plugin-import/pull/632
  427. [#630]: https://github.com/benmosher/eslint-plugin-import/pull/630
  428. [#628]: https://github.com/benmosher/eslint-plugin-import/pull/628
  429. [#596]: https://github.com/benmosher/eslint-plugin-import/pull/596
  430. [#586]: https://github.com/benmosher/eslint-plugin-import/pull/586
  431. [#578]: https://github.com/benmosher/eslint-plugin-import/pull/578
  432. [#568]: https://github.com/benmosher/eslint-plugin-import/pull/568
  433. [#555]: https://github.com/benmosher/eslint-plugin-import/pull/555
  434. [#538]: https://github.com/benmosher/eslint-plugin-import/pull/538
  435. [#527]: https://github.com/benmosher/eslint-plugin-import/pull/527
  436. [#509]: https://github.com/benmosher/eslint-plugin-import/pull/509
  437. [#508]: https://github.com/benmosher/eslint-plugin-import/pull/508
  438. [#503]: https://github.com/benmosher/eslint-plugin-import/pull/503
  439. [#499]: https://github.com/benmosher/eslint-plugin-import/pull/499
  440. [#489]: https://github.com/benmosher/eslint-plugin-import/pull/489
  441. [#485]: https://github.com/benmosher/eslint-plugin-import/pull/485
  442. [#461]: https://github.com/benmosher/eslint-plugin-import/pull/461
  443. [#449]: https://github.com/benmosher/eslint-plugin-import/pull/449
  444. [#444]: https://github.com/benmosher/eslint-plugin-import/pull/444
  445. [#428]: https://github.com/benmosher/eslint-plugin-import/pull/428
  446. [#395]: https://github.com/benmosher/eslint-plugin-import/pull/395
  447. [#371]: https://github.com/benmosher/eslint-plugin-import/pull/371
  448. [#365]: https://github.com/benmosher/eslint-plugin-import/pull/365
  449. [#359]: https://github.com/benmosher/eslint-plugin-import/pull/359
  450. [#343]: https://github.com/benmosher/eslint-plugin-import/pull/343
  451. [#332]: https://github.com/benmosher/eslint-plugin-import/pull/332
  452. [#322]: https://github.com/benmosher/eslint-plugin-import/pull/322
  453. [#321]: https://github.com/benmosher/eslint-plugin-import/pull/321
  454. [#316]: https://github.com/benmosher/eslint-plugin-import/pull/316
  455. [#308]: https://github.com/benmosher/eslint-plugin-import/pull/308
  456. [#298]: https://github.com/benmosher/eslint-plugin-import/pull/298
  457. [#297]: https://github.com/benmosher/eslint-plugin-import/pull/297
  458. [#296]: https://github.com/benmosher/eslint-plugin-import/pull/296
  459. [#290]: https://github.com/benmosher/eslint-plugin-import/pull/290
  460. [#289]: https://github.com/benmosher/eslint-plugin-import/pull/289
  461. [#288]: https://github.com/benmosher/eslint-plugin-import/pull/288
  462. [#287]: https://github.com/benmosher/eslint-plugin-import/pull/287
  463. [#278]: https://github.com/benmosher/eslint-plugin-import/pull/278
  464. [#261]: https://github.com/benmosher/eslint-plugin-import/pull/261
  465. [#256]: https://github.com/benmosher/eslint-plugin-import/pull/256
  466. [#254]: https://github.com/benmosher/eslint-plugin-import/pull/254
  467. [#250]: https://github.com/benmosher/eslint-plugin-import/pull/250
  468. [#247]: https://github.com/benmosher/eslint-plugin-import/pull/247
  469. [#245]: https://github.com/benmosher/eslint-plugin-import/pull/245
  470. [#243]: https://github.com/benmosher/eslint-plugin-import/pull/243
  471. [#241]: https://github.com/benmosher/eslint-plugin-import/pull/241
  472. [#239]: https://github.com/benmosher/eslint-plugin-import/pull/239
  473. [#228]: https://github.com/benmosher/eslint-plugin-import/pull/228
  474. [#211]: https://github.com/benmosher/eslint-plugin-import/pull/211
  475. [#164]: https://github.com/benmosher/eslint-plugin-import/pull/164
  476. [#157]: https://github.com/benmosher/eslint-plugin-import/pull/157
  477. [#314]: https://github.com/benmosher/eslint-plugin-import/pull/314
  478. [#912]: https://github.com/benmosher/eslint-plugin-import/pull/912
  479. [#1058]: https://github.com/benmosher/eslint-plugin-import/issues/1058
  480. [#931]: https://github.com/benmosher/eslint-plugin-import/issues/931
  481. [#886]: https://github.com/benmosher/eslint-plugin-import/issues/886
  482. [#863]: https://github.com/benmosher/eslint-plugin-import/issues/863
  483. [#842]: https://github.com/benmosher/eslint-plugin-import/issues/842
  484. [#839]: https://github.com/benmosher/eslint-plugin-import/issues/839
  485. [#720]: https://github.com/benmosher/eslint-plugin-import/issues/720
  486. [#717]: https://github.com/benmosher/eslint-plugin-import/issues/717
  487. [#686]: https://github.com/benmosher/eslint-plugin-import/issues/686
  488. [#671]: https://github.com/benmosher/eslint-plugin-import/issues/671
  489. [#660]: https://github.com/benmosher/eslint-plugin-import/issues/660
  490. [#653]: https://github.com/benmosher/eslint-plugin-import/issues/653
  491. [#627]: https://github.com/benmosher/eslint-plugin-import/issues/627
  492. [#620]: https://github.com/benmosher/eslint-plugin-import/issues/620
  493. [#609]: https://github.com/benmosher/eslint-plugin-import/issues/609
  494. [#604]: https://github.com/benmosher/eslint-plugin-import/issues/604
  495. [#602]: https://github.com/benmosher/eslint-plugin-import/issues/602
  496. [#601]: https://github.com/benmosher/eslint-plugin-import/issues/601
  497. [#592]: https://github.com/benmosher/eslint-plugin-import/issues/592
  498. [#577]: https://github.com/benmosher/eslint-plugin-import/issues/577
  499. [#570]: https://github.com/benmosher/eslint-plugin-import/issues/570
  500. [#567]: https://github.com/benmosher/eslint-plugin-import/issues/567
  501. [#566]: https://github.com/benmosher/eslint-plugin-import/issues/566
  502. [#545]: https://github.com/benmosher/eslint-plugin-import/issues/545
  503. [#530]: https://github.com/benmosher/eslint-plugin-import/issues/530
  504. [#529]: https://github.com/benmosher/eslint-plugin-import/issues/529
  505. [#519]: https://github.com/benmosher/eslint-plugin-import/issues/519
  506. [#507]: https://github.com/benmosher/eslint-plugin-import/issues/507
  507. [#484]: https://github.com/benmosher/eslint-plugin-import/issues/484
  508. [#478]: https://github.com/benmosher/eslint-plugin-import/issues/478
  509. [#456]: https://github.com/benmosher/eslint-plugin-import/issues/456
  510. [#453]: https://github.com/benmosher/eslint-plugin-import/issues/453
  511. [#452]: https://github.com/benmosher/eslint-plugin-import/issues/452
  512. [#447]: https://github.com/benmosher/eslint-plugin-import/issues/447
  513. [#441]: https://github.com/benmosher/eslint-plugin-import/issues/441
  514. [#423]: https://github.com/benmosher/eslint-plugin-import/issues/423
  515. [#416]: https://github.com/benmosher/eslint-plugin-import/issues/416
  516. [#415]: https://github.com/benmosher/eslint-plugin-import/issues/415
  517. [#402]: https://github.com/benmosher/eslint-plugin-import/issues/402
  518. [#386]: https://github.com/benmosher/eslint-plugin-import/issues/386
  519. [#373]: https://github.com/benmosher/eslint-plugin-import/issues/373
  520. [#370]: https://github.com/benmosher/eslint-plugin-import/issues/370
  521. [#348]: https://github.com/benmosher/eslint-plugin-import/issues/348
  522. [#342]: https://github.com/benmosher/eslint-plugin-import/issues/342
  523. [#328]: https://github.com/benmosher/eslint-plugin-import/issues/328
  524. [#317]: https://github.com/benmosher/eslint-plugin-import/issues/317
  525. [#313]: https://github.com/benmosher/eslint-plugin-import/issues/313
  526. [#311]: https://github.com/benmosher/eslint-plugin-import/issues/311
  527. [#306]: https://github.com/benmosher/eslint-plugin-import/issues/306
  528. [#286]: https://github.com/benmosher/eslint-plugin-import/issues/286
  529. [#283]: https://github.com/benmosher/eslint-plugin-import/issues/283
  530. [#281]: https://github.com/benmosher/eslint-plugin-import/issues/281
  531. [#275]: https://github.com/benmosher/eslint-plugin-import/issues/275
  532. [#272]: https://github.com/benmosher/eslint-plugin-import/issues/272
  533. [#270]: https://github.com/benmosher/eslint-plugin-import/issues/270
  534. [#267]: https://github.com/benmosher/eslint-plugin-import/issues/267
  535. [#266]: https://github.com/benmosher/eslint-plugin-import/issues/266
  536. [#216]: https://github.com/benmosher/eslint-plugin-import/issues/216
  537. [#214]: https://github.com/benmosher/eslint-plugin-import/issues/214
  538. [#210]: https://github.com/benmosher/eslint-plugin-import/issues/210
  539. [#200]: https://github.com/benmosher/eslint-plugin-import/issues/200
  540. [#192]: https://github.com/benmosher/eslint-plugin-import/issues/192
  541. [#191]: https://github.com/benmosher/eslint-plugin-import/issues/191
  542. [#189]: https://github.com/benmosher/eslint-plugin-import/issues/189
  543. [#170]: https://github.com/benmosher/eslint-plugin-import/issues/170
  544. [#155]: https://github.com/benmosher/eslint-plugin-import/issues/155
  545. [#119]: https://github.com/benmosher/eslint-plugin-import/issues/119
  546. [#89]: https://github.com/benmosher/eslint-plugin-import/issues/89
  547. [Unreleased]: https://github.com/benmosher/eslint-plugin-import/compare/v2.13.0...HEAD
  548. [2.13.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.12.0...v2.13.0
  549. [2.12.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.11.0...v2.12.0
  550. [2.11.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.10.0...v2.11.0
  551. [2.10.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.9.0...v2.10.0
  552. [2.9.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.8.0...v2.9.0
  553. [2.8.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.7.0...v2.8.0
  554. [2.7.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.6.1...v2.7.0
  555. [2.6.1]: https://github.com/benmosher/eslint-plugin-import/compare/v2.6.0...v2.6.1
  556. [2.6.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.5.0...v2.6.0
  557. [2.5.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.4.0...v2.5.0
  558. [2.4.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.3.0...v2.4.0
  559. [2.3.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.2.0...v2.3.0
  560. [2.2.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.1.0...v2.2.0
  561. [2.1.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.0.1...v2.1.0
  562. [2.0.1]: https://github.com/benmosher/eslint-plugin-import/compare/v2.0.0...v2.0.1
  563. [2.0.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.16.0...v2.0.0
  564. [1.16.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.15.0...v1.16.0
  565. [1.15.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.14.0...v1.15.0
  566. [1.14.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.13.0...v1.14.0
  567. [1.13.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.12.0...v1.13.0
  568. [1.12.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.11.1...v1.12.0
  569. [1.11.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.11.0...v1.11.1
  570. [1.11.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.10.3...v1.11.0
  571. [1.10.3]: https://github.com/benmosher/eslint-plugin-import/compare/v1.10.2...v1.10.3
  572. [1.10.2]: https://github.com/benmosher/eslint-plugin-import/compare/v1.10.1...v1.10.2
  573. [1.10.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.10.0...v1.10.1
  574. [1.10.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.9.2...v1.10.0
  575. [1.9.2]: https://github.com/benmosher/eslint-plugin-import/compare/v1.9.1...v1.9.2
  576. [1.9.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.9.0...v1.9.1
  577. [1.9.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.8.1...v1.9.0
  578. [1.8.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.8.0...v1.8.1
  579. [1.8.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.7.0...v1.8.0
  580. [1.7.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.6.1...v1.7.0
  581. [1.6.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.6.0...v1.6.1
  582. [1.6.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.5.0...1.6.0
  583. [1.5.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.4.0...v1.5.0
  584. [1.4.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.3.0...v1.4.0
  585. [1.3.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.2.0...v1.3.0
  586. [1.2.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.1.0...v1.2.0
  587. [1.1.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.4...v1.1.0
  588. [1.0.4]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.3...v1.0.4
  589. [1.0.3]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.2...v1.0.3
  590. [1.0.2]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.1...v1.0.2
  591. [1.0.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.0...v1.0.1
  592. [1.0.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.0-beta.0...v1.0.0
  593. [1.0.0-beta.0]: https://github.com/benmosher/eslint-plugin-import/compare/v0.13.0...v1.0.0-beta.0
  594. [0.13.0]: https://github.com/benmosher/eslint-plugin-import/compare/v0.12.1...v0.13.0
  595. [0.12.2]: https://github.com/benmosher/eslint-plugin-import/compare/v0.12.1...v0.12.2
  596. [0.12.1]: https://github.com/benmosher/eslint-plugin-import/compare/v0.12.0...v0.12.1
  597. [0.12.0]: https://github.com/benmosher/eslint-plugin-import/compare/v0.11.0...v0.12.0
  598. [0.11.0]: https://github.com/benmosher/eslint-plugin-import/compare/v0.10.1...v0.11.0
  599. [@mathieudutour]: https://github.com/mathieudutour
  600. [@gausie]: https://github.com/gausie
  601. [@singles]: https://github.com/singles
  602. [@jfmengels]: https://github.com/jfmengels
  603. [@lo1tuma]: https://github.com/lo1tuma
  604. [@dmnd]: https://github.com/dmnd
  605. [@lemonmade]: https://github.com/lemonmade
  606. [@jimbolla]: https://github.com/jimbolla
  607. [@jquense]: https://github.com/jquense
  608. [@jonboiser]: https://github.com/jonboiser
  609. [@taion]: https://github.com/taion
  610. [@strawbrary]: https://github.com/strawbrary
  611. [@SimenB]: https://github.com/SimenB
  612. [@josh]: https://github.com/josh
  613. [@borisyankov]: https://github.com/borisyankov
  614. [@gavriguy]: https://github.com/gavriguy
  615. [@jkimbo]: https://github.com/jkimbo
  616. [@le0nik]: https://github.com/le0nik
  617. [@scottnonnenberg]: https://github.com/scottnonnenberg
  618. [@sindresorhus]: https://github.com/sindresorhus
  619. [@ljharb]: https://github.com/ljharb
  620. [@rhettlivingston]: https://github.com/rhettlivingston
  621. [@zloirock]: https://github.com/zloirock
  622. [@rhys-vdw]: https://github.com/rhys-vdw
  623. [@wKich]: https://github.com/wKich
  624. [@tizmagik]: https://github.com/tizmagik
  625. [@knpwrs]: https://github.com/knpwrs
  626. [@spalger]: https://github.com/spalger
  627. [@preco21]: https://github.com/preco21
  628. [@skyrpex]: https://github.com/skyrpex
  629. [@fson]: https://github.com/fson
  630. [@ntdb]: https://github.com/ntdb
  631. [@jakubsta]: https://github.com/jakubsta
  632. [@wtgtybhertgeghgtwtg]: https://github.com/wtgtybhertgeghgtwtg
  633. [@duncanbeevers]: https://github.com/duncanbeevers
  634. [@giodamelio]: https://github.com/giodamelio
  635. [@ntdb]: https://github.com/ntdb
  636. [@ramasilveyra]: https://github.com/ramasilveyra
  637. [@sompylasar]: https://github.com/sompylasar
  638. [@kevin940726]: https://github.com/kevin940726
  639. [@eelyafi]: https://github.com/eelyafi
  640. [@mastilver]: https://github.com/mastilver
  641. [@jseminck]: https://github.com/jseminck
  642. [@laysent]: https://github.com/laysent
  643. [@k15a]: https://github.com/k15a
  644. [@mplewis]: https://github.com/mplewis
  645. [@rosswarren]: https://github.com/rosswarren
  646. [@alexgorbatchev]: https://github.com/alexgorbatchev
  647. [@tihonove]: https://github.com/tihonove
  648. [@robertrossmann]: https://github.com/robertrossmann
  649. [@isiahmeadows]: https://github.com/isiahmeadows
  650. [@graingert]: https://github.com/graingert
  651. [@danny-andrews]: https://github.com/dany-andrews
  652. [@fengkfengk]: https://github.com/fengkfengk
  653. [@futpib]: https://github.com/futpib
  654. [@klimashkin]: https://github.com/klimashkin
  655. [@lukeapage]: https://github.com/lukeapage
  656. [@manovotny]: https://github.com/manovotny
  657. [@mattijsbliek]: https://github.com/mattijsbliek
  658. [@hulkish]: https://github.com/hulkish
  659. [@chrislloyd]: https://github.com/chrislloyd
  660. [@ai]: https://github.com/ai
  661. [@syymza]: https://github.com/syymza
  662. [@justinanastos]: https://github.com/justinanastos
  663. [@1pete]: https://github.com/1pete
  664. [@gajus]: https://github.com/gajus
  665. [@jf248]: https://github.com/jf248