Skip to content

Commit 5bfeeed

Browse files
committed
Enable additional node lint rules
1 parent 00a3ddc commit 5bfeeed

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed

etc/eslint/rules/nodejs.js

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,53 @@ rules[ 'node/callback-return' ] = [ 'warn', [
5959
'next'
6060
]];
6161

62+
/* eslint-disable -- disable linting due to `import` statements throwing for doctest rules */
63+
64+
/**
65+
* Enforces use of `module.exports` as the export style over `exports`.
66+
*
67+
* @name node/file-extension-in-import
68+
* @memberof rules
69+
* @type {Array}
70+
* @see [node/file-extension-in-import]{@link https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/file-extension-in-import.md}
71+
*
72+
* @example
73+
* // Bad...
74+
* import foo from './path/to/a/file';
75+
*
76+
* @example
77+
* // Good...
78+
* import eslint from 'eslint';
79+
* import foo from './path/to/a/file.js';
80+
*/
81+
rules[ 'node/file-extension-in-import' ] = [ 'error', 'always', {
82+
'tryExtensions': [ '.js', '.json', '.node', '.ts' ]
83+
}];
84+
85+
/* eslint-enable */
86+
87+
/**
88+
* Enforces use of `module.exports` as the export style over `exports`.
89+
*
90+
* @name node/exports-style
91+
* @memberof rules
92+
* @type {Array}
93+
* @see [node/exports-style]{@link https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/exports-style.md}
94+
*
95+
* @example
96+
* // Bad...
97+
* exports.foo = 1;
98+
* exports.bar = 2;
99+
*
100+
* @example
101+
* // Good...
102+
* module.exports = {
103+
* 'foo': 1,
104+
* 'bar': 2
105+
* };
106+
*/
107+
rules[ 'node/exports-style' ] = [ 'error', 'module.exports' ];
108+
62109
/**
63110
* Allow `require` to be used in a nested scope.
64111
*
@@ -105,6 +152,28 @@ rules[ 'node/global-require' ] = 'off';
105152
*/
106153
rules[ 'node/handle-callback-err' ] = [ 'error', '^(err|error)$' ];
107154

155+
/**
156+
* Disallows use of `exports = {}` aside from `module.exports = exports = {}`.
157+
*
158+
* @name node/no-exports-assign
159+
* @memberof rules
160+
* @type {string}
161+
* @default 'error'
162+
* @see [node/no-exports-assign]{@link https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-exports-assign.md}
163+
*
164+
* @example
165+
* // Bad...
166+
* exports = {};
167+
*
168+
* @example
169+
* // Good...
170+
* module.exports.foo = 1;
171+
* exports.bar = 2;
172+
*
173+
* module.exports = {};
174+
*/
175+
rules[ 'node/no-exports-assign' ] = 'error';
176+
108177
/**
109178
* Only allow `require`d modules to be grouped together.
110179
*
@@ -213,6 +282,77 @@ rules[ 'node/no-restricted-require' ] = [ 'error', [
213282
*/
214283
rules[ 'node/no-sync' ] = 'warn';
215284

285+
/**
286+
* Disallow `bin` files that npm ignores.
287+
*
288+
* @name node/no-unpublished-bin
289+
* @memberof rules
290+
* @type {Array}
291+
* @see [node/no-unpublished-bin]{@link https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unpublished-bin.md}
292+
*/
293+
rules[ 'node/no-unpublished-bin' ] = [ 'error' ];
294+
295+
/**
296+
* Disallows `import` declarations which import private modules.
297+
*
298+
* @name node/no-unpublished-import
299+
* @memberof rules
300+
* @type {Array}
301+
* @see [node/no-unpublished-import]{@link https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unpublished-import.md}
302+
*/
303+
rules[ 'node/no-unpublished-import' ] = [ 'error', {
304+
'allowModules': [],
305+
'tryExtensions': [ '.js', '.json', '.node' ]
306+
}];
307+
308+
/**
309+
* Disallows `require()` expressions which import private modules.
310+
*
311+
* @name node/no-unpublished-require
312+
* @memberof rules
313+
* @type {Array}
314+
* @see [node/no-unpublished-require]{@link https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unpublished-require.md}
315+
*/
316+
rules[ 'node/no-unpublished-require' ] = [ 'error', {
317+
'allowModules': [],
318+
'tryExtensions': [ '.js', '.json', '.node' ]
319+
}];
320+
321+
/**
322+
* Makes ESLint come to address `process.exit()` as throw in code path analysis.
323+
*
324+
* @name node/process-exit-as-throw
325+
* @memberof rules
326+
* @type {string}
327+
* @default 'error'
328+
* @see [node/process-exit-as-throw]{@link https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/process-exit-as-throw.md}
329+
*/
330+
rules[ 'node/process-exit-as-throw' ] = 'error';
331+
332+
/**
333+
* Suggests correct usage of shebang for `bin` files.
334+
*
335+
* @name node/shebang
336+
* @memberof rules
337+
* @type {Array}
338+
* @see [node/shebang]{@link https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/shebang.md}
339+
*/
340+
rules[ 'node/shebang' ] = [ 'error', {
341+
'convertPath': [
342+
{
343+
'include': [
344+
'**/bin/**'
345+
],
346+
'exclude': [
347+
'**/scripts/**'
348+
],
349+
'replace': [
350+
'^bin/(.+)$', 'bin/$1'
351+
]
352+
}
353+
]
354+
}];
355+
216356

217357
// EXPORTS //
218358

0 commit comments

Comments
 (0)