Skip to content

Commit 906ffb0

Browse files
authored
Update rules and config for NodeJS (#74)
* Added packages for config of Node * Added rules for config of Node * Added info about Node in the file README.md
1 parent 07cb42b commit 906ffb0

File tree

4 files changed

+2024
-186
lines changed

4 files changed

+2024
-186
lines changed

README.md

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,37 @@ For validating **React** project with TypeScript use `react-typescript` version
7373

7474
Caution! `htmlacademy/react` and `htmlacademy/react-typescript` doesn't include `react-hooks/rules-of-hooks` and `react-hooks/exhaustive-deps` because in our courses we use CRA (Create React App) which includes these plugins out of box. Install them yourself if necessary.
7575

76-
**Node.js** versions soon.
76+
For validating **Node** project use `node` version (`htmlacademy/node` includes `htmlacademy/vanilla`, `plugin:@typescript-eslint/recommended` and `plugin:node/recommended`).
77+
78+
Before using `eslint-config-htmlacademy` make sure you have TypeScript and `@typescript-eslint/parser` installed:
79+
80+
```bash
81+
$ npm i --save-dev typescript @typescript-eslint/parser
82+
```
83+
84+
Then install the plugin:
85+
86+
```bash
87+
$ npm i --save-dev @typescript-eslint/eslint-plugin
88+
```
89+
90+
```json
91+
{
92+
"env": {
93+
"es2021": true,
94+
"node": true
95+
},
96+
"parserOptions": {
97+
"ecmaVersion": 2021,
98+
"sourceType": "module"
99+
},
100+
"parser": "@typescript-eslint/parser",
101+
"plugins": "@typescript-eslint",
102+
"extends": "htmlacademy/node"
103+
}
104+
```
105+
106+
Caution!
107+
- `htmlacademy/node` aimed at using Typescript.
108+
- `htmlacademy/node` recommends a use of the "engines" field of package.json, because our package includes `plugin:node/recomended`. The "engines" field is used by `node/no-unsupported-features/*` rules.
109+
- `htmlacademy/node` uses ES6 modules and the rules are aimed precisely at this approach of connecting modules.

node.js

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,47 @@
11
module.exports = {
2-
extends: [`htmlacademy/es6`],
2+
extends: [
3+
'htmlacademy/vanilla',
4+
'plugin:@typescript-eslint/recommended',
5+
'plugin:node/recommended',
6+
],
37
rules: {
4-
// Node.js
5-
// Specific overridden rules
8+
// Possible Errors
69
// ------------------------------------------
7-
'no-console': `off`,
8-
'no-process-exit': `off`
10+
'no-console': 'off',
11+
'node/handle-callback-err': ['error', "^.*(e|E)rr"],
12+
'node/no-callback-literal': 'error',
13+
'node/no-exports-assign': 'off',
14+
'node/no-extraneous-import': 'off',
15+
'node/no-extraneous-require': 'off',
16+
'node/no-missing-import': 'off',
17+
'node/no-missing-require': 'off',
18+
'node/no-new-require': 'off',
19+
'node/no-path-concat': 'error',
20+
'node/no-process-exit': 'error',
21+
'node/no-unpublished-bin': 'off',
22+
'node/no-unpublished-import': 'off',
23+
'node/no-unpublished-require': 'off',
24+
'node/no-unsupported-features/es-builtins': 'off',
25+
'node/no-unsupported-features/node-builtins': 'off',
26+
'node/process-exit-as-throw': 'error',
27+
'node/shebang': 'off',
28+
// Stylistic Issues
29+
// ------------------------------------------
30+
'node/callback-return': 'error',
31+
'node/exports-style': 'off',
32+
'node/file-extension-in-import': ['error', 'always'],
33+
'node/global-require': 'error',
34+
'node/no-mixed-requires': 'error',
35+
'node/no-process-env': 'off',
36+
'node/no-restricted-import': 'off',
37+
'node/no-restricted-require': 'off',
38+
'node/no-sync': 'off',
39+
'node/prefer-global/buffer': 'error',
40+
'node/prefer-global/text-decoder': 'error',
41+
'node/prefer-global/text-encoder': 'error',
42+
'node/prefer-global/url-search-params': 'error',
43+
'node/prefer-global/url': 'error',
44+
'node/prefer-promises/dns': 'error',
45+
'node/prefer-promises/fs': 'error',
946
}
1047
};
11-

0 commit comments

Comments
 (0)