@@ -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*/
106153rules [ '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*/
214283rules [ '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