From 43ccc3fe11684e0e0085ab3f492c96638bcdc4fc Mon Sep 17 00:00:00 2001 From: Joe Lencioni Date: Mon, 16 May 2016 11:26:29 -0700 Subject: [PATCH] Enable imports/imports-first rule Since imports are hoisted, keeping them all at the top prevents surprising behavior. --- README.md | 19 +++++++++++++++++++ .../rules/imports.js | 3 +-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a75a104e..38699c80 100644 --- a/README.md +++ b/README.md @@ -1165,6 +1165,25 @@ Other Style Guides export default function foo() {} ``` + + - [10.7](#modules--imports-first) Put all `import`s above non-import statements. + eslint: [`import/imports-first`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/imports-first.md) + > Why? Since `import`s are hoisted, keeping them all at the top prevents surprising behavior. + + ```javascript + // bad + import foo from 'foo'; + foo.init(); + + import bar from 'bar'; + + // good + import foo from 'foo'; + import bar from 'bar'; + + foo.init(); + ``` + **[⬆ back to top](#table-of-contents)** ## Iterators and Generators diff --git a/packages/eslint-config-airbnb-base/rules/imports.js b/packages/eslint-config-airbnb-base/rules/imports.js index 1f854043..683d0345 100644 --- a/packages/eslint-config-airbnb-base/rules/imports.js +++ b/packages/eslint-config-airbnb-base/rules/imports.js @@ -86,8 +86,7 @@ module.exports = { // disallow non-import statements appearing before import statements // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/imports-first.md - // TODO: enable? - 'import/imports-first': [0, 'absolute-first'], + 'import/imports-first': [2, 'absolute-first'], // disallow duplicate imports // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-duplicates.md