Skip to content

Commit 34ccf90

Browse files
committed
[eslint config] [base] [breaking] migrate import's settings/rules to a separate file.
1 parent 3948eb6 commit 34ccf90

File tree

4 files changed

+127
-122
lines changed

4 files changed

+127
-122
lines changed

packages/eslint-config-airbnb-base/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module.exports = {
22
extends: [
33
'./legacy',
44
'./rules/es6',
5+
'./rules/imports',
56
].map(require.resolve),
67
parserOptions: {
78
ecmaVersion: 7,

packages/eslint-config-airbnb-base/rules/es6.js

Lines changed: 1 addition & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ module.exports = {
1010
'objectLiteralDuplicateProperties': false
1111
}
1212
},
13-
'plugins': [
14-
'import'
15-
],
1613

1714
'rules': {
1815
// enforces no braces where they can be omitted
@@ -121,108 +118,6 @@ module.exports = {
121118

122119
// enforce spacing around the * in yield* expressions
123120
// http://eslint.org/docs/rules/yield-star-spacing
124-
'yield-star-spacing': [2, 'after'],
125-
126-
// disallow invalid exports, e.g. multiple defaults
127-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/export.md
128-
'import/export': 2,
129-
130-
// ensure default import coupled with default export
131-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/default.md#when-not-to-use-it
132-
'import/default': 0,
133-
134-
// Ensure consistent use of file extension within the import path
135-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/extensions.md
136-
// TODO: enable
137-
'import/extensions': [0, 'never'],
138-
139-
// ensure named imports coupled with named exports
140-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/named.md#when-not-to-use-it
141-
'import/named': 0,
142-
143-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/namespace.md
144-
'import/namespace': 0,
145-
146-
// Forbid the use of extraneous packages
147-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-extraneous-dependencies.md
148-
// TODO: enable
149-
'import/no-extraneous-dependencies': [0, {
150-
'devDependencies': false,
151-
'optionalDependencies': false,
152-
}],
153-
154-
// ensure imports point to files/modules that can be resolved
155-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unresolved.md
156-
'import/no-unresolved': [2, { 'commonjs': true }],
157-
158-
// do not allow a default import name to match a named export
159-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-as-default.md
160-
// TODO: enable
161-
'import/no-named-as-default': 0,
162-
163-
// disallow require()
164-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-commonjs.md
165-
'import/no-commonjs': 0,
166-
167-
// disallow AMD require/define
168-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-amd.md
169-
'import/no-amd': 2,
170-
171-
// disallow non-import statements appearing before import statements
172-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/imports-first.md
173-
// TODO: enable?
174-
'import/imports-first': [0, 'absolute-first'],
175-
176-
// disallow duplicate imports
177-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-duplicates.md
178-
'import/no-duplicates': 2,
179-
180-
// disallow use of jsdoc-marked-deprecated imports
181-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-deprecated.md
182-
'import/no-deprecated': 0,
183-
184-
// disallow namespace imports
185-
// TODO: enable?
186-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-namespace.md
187-
'import/no-namespace': 0,
188-
189-
// warn on accessing default export property names that are also named exports
190-
// TODO: enable?
191-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-as-default-member.md
192-
'import/no-named-as-default-member': 0,
193-
194-
// No Node.js builtin modules
195-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-nodejs-modules.md
196-
'import/no-nodejs-modules': 0,
197-
198-
// Enforce a convention in module import order
199-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/order.md
200-
// TODO: enable?
201-
'import/order': [0, {
202-
'groups': ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],
203-
'newlines-between': 'never',
204-
}],
205-
206-
// Require modules with a single export to use a default export
207-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/prefer-default-export.md
208-
// TODO: enable
209-
'import/prefer-default-export': 0,
210-
211-
// Require a newline after the last import/require in a group
212-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/newline-after-import.md
213-
// TODO: enable
214-
'import/newline-after-import': 0,
215-
216-
// Forbid mutable exports
217-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-mutable-exports.md
218-
'import/no-mutable-exports': 2,
219-
},
220-
221-
'settings': {
222-
'import/resolver': {
223-
'node': {
224-
'extensions': ['.js', '.json']
225-
}
226-
}
121+
'yield-star-spacing': [2, 'after']
227122
}
228123
};
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
module.exports = {
2+
'env': {
3+
'es6': true
4+
},
5+
'parserOptions': {
6+
'ecmaVersion': 6,
7+
'sourceType': 'module'
8+
},
9+
'plugins': [
10+
'import'
11+
],
12+
13+
'settings': {
14+
'import/resolver': {
15+
'node': {
16+
'extensions': ['.js', '.json']
17+
}
18+
}
19+
},
20+
21+
'rules': {
22+
// Static analysis:
23+
24+
// ensure imports point to files/modules that can be resolved
25+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unresolved.md
26+
'import/no-unresolved': [2, { 'commonjs': true }],
27+
28+
// ensure named imports coupled with named exports
29+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/named.md#when-not-to-use-it
30+
'import/named': 0,
31+
32+
// ensure default import coupled with default export
33+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/default.md#when-not-to-use-it
34+
'import/default': 0,
35+
36+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/namespace.md
37+
'import/namespace': 0,
38+
39+
// Helpful warnings:
40+
41+
// disallow invalid exports, e.g. multiple defaults
42+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/export.md
43+
'import/export': 2,
44+
45+
// do not allow a default import name to match a named export
46+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-as-default.md
47+
// TODO: enable
48+
'import/no-named-as-default': 0,
49+
50+
// warn on accessing default export property names that are also named exports
51+
// TODO: enable?
52+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-as-default-member.md
53+
'import/no-named-as-default-member': 0,
54+
55+
// disallow use of jsdoc-marked-deprecated imports
56+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-deprecated.md
57+
'import/no-deprecated': 0,
58+
59+
// Forbid the use of extraneous packages
60+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-extraneous-dependencies.md
61+
// TODO: enable
62+
'import/no-extraneous-dependencies': [0, {
63+
'devDependencies': false,
64+
'optionalDependencies': false,
65+
}],
66+
67+
// Forbid mutable exports
68+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-mutable-exports.md
69+
'import/no-mutable-exports': 2,
70+
71+
// Module systems:
72+
73+
// disallow require()
74+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-commonjs.md
75+
'import/no-commonjs': 0,
76+
77+
// disallow AMD require/define
78+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-amd.md
79+
'import/no-amd': 2,
80+
81+
// No Node.js builtin modules
82+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-nodejs-modules.md
83+
'import/no-nodejs-modules': 0,
84+
85+
// Style guide:
86+
87+
// disallow non-import statements appearing before import statements
88+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/imports-first.md
89+
// TODO: enable?
90+
'import/imports-first': [0, 'absolute-first'],
91+
92+
// disallow duplicate imports
93+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-duplicates.md
94+
'import/no-duplicates': 2,
95+
96+
// disallow namespace imports
97+
// TODO: enable?
98+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-namespace.md
99+
'import/no-namespace': 0,
100+
101+
// Ensure consistent use of file extension within the import path
102+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/extensions.md
103+
// TODO: enable
104+
'import/extensions': [0, 'never'],
105+
106+
// Enforce a convention in module import order
107+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/order.md
108+
// TODO: enable?
109+
'import/order': [0, {
110+
'groups': ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],
111+
'newlines-between': 'never',
112+
}],
113+
114+
// Require a newline after the last import/require in a group
115+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/newline-after-import.md
116+
// TODO: enable
117+
'import/newline-after-import': 0,
118+
119+
// Require modules with a single export to use a default export
120+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/prefer-default-export.md
121+
// TODO: enable
122+
'import/prefer-default-export': 0
123+
}
124+
};

packages/eslint-config-airbnb-base/rules/node.js

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@ module.exports = {
22
'env': {
33
'node': true
44
},
5-
'plugins': [
6-
'import'
7-
],
85

96
'rules': {
107
// enforce return after a callback
@@ -36,18 +33,6 @@ module.exports = {
3633
'no-restricted-modules': 0,
3734

3835
// disallow use of synchronous methods (off by default)
39-
'no-sync': 0,
40-
41-
// ensure imports point to files/modules that can be resolved
42-
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unresolved.md
43-
'import/no-unresolved': [2, { 'commonjs': true }]
44-
},
45-
46-
'settings': {
47-
'import/resolver': {
48-
'node': {
49-
'extensions': ['.js', '.json']
50-
}
51-
}
36+
'no-sync': 0
5237
}
5338
};

0 commit comments

Comments
 (0)