https://github.com/KnodesCommunity/eslint-config
ESLint rules & presets for Knodes
https://github.com/KnodesCommunity/eslint-config
eslint eslint-plugin javascript typescript
Last synced: 8 months ago
JSON representation
ESLint rules & presets for Knodes
- Host: GitHub
- URL: https://github.com/KnodesCommunity/eslint-config
- Owner: KnodesCommunity
- License: mit
- Created: 2021-01-05T03:38:13.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-10-25T03:59:40.000Z (over 1 year ago)
- Last Synced: 2024-10-25T12:42:14.353Z (over 1 year ago)
- Topics: eslint, eslint-plugin, javascript, typescript
- Language: TypeScript
- Homepage:
- Size: 1.65 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# @knodes/eslint-config
ESLint rules & presets for Knodes
---
This set of rules is released open-source for anyone to use. It is meant to be a strict, aerated configuration.
### Main features
> :white_check_mark: is always installed, :white_medium_square: is optional.
* **Languages:**
* :white_check_mark: Javascript
* :white_medium_square: Typescript
* :white_medium_square: with rxjs
* **Frameworks:**
* :white_check_mark: Bare node/browser
* :white_medium_square: [Nest](https://nestjs.com/)
* :white_medium_square: [Angular](https://angular.io/) ([:information_source: more infos](#angular))
* **Plugins:** (checked are always used)
* :white_check_mark: [eslint-plugin-import](https://www.npmjs.com/package/eslint-plugin-import)
* :white_check_mark: [eslint-plugin-jsdoc](https://www.npmjs.com/package/eslint-plugin-jsdoc)
* :white_check_mark: [eslint-plugin-prefer-arrow](https://www.npmjs.com/package/eslint-plugin-prefer-arrow)
* :white_check_mark: [eslint-plugin-sort-export-all](https://www.npmjs.com/package/eslint-plugin-sort-export-all)
* :white_check_mark: [eslint-plugin-eslint-comments](https://www.npmjs.com/package/eslint-plugin-eslint-comments)
* :white_medium_square: [@angular-eslint](https://www.npmjs.com/package/@angular-eslint/eslint-plugin)
* :white_medium_square: [@typescript-eslint](https://www.npmjs.com/package/@typescript-eslint/eslint-plugin)
### Configurations quick outline:
* Angular:
* `@knodes/eslint-config/angular`
* `@knodes/eslint-config/angular/jest`
* For libs:
* `@knodes/eslint-config/angular/lib`
* `@knodes/eslint-config/angular/lib/jest`
* Nest: `@knodes/eslint-config/nest`
* Bare:
* Pure JS: `@knodes/eslint-config/js`
* JS + TS: `@knodes/eslint-config/ts`
* JS + TS + rxjs: `@knodes/eslint-config/ts-rxjs`
You can also use configuration fragments from `@knodes/eslint-config/config-fragments/*`. See [the directory on GitHub](https://github.com/KnodesCommunity/eslint-config/tree/main/src/config-fragments).
### Installation & configuration
For any preset, you must at least install base dependencies.
```sh
npm install --save-dev @knodes/eslint-config eslint eslint-plugin-import eslint-plugin-jsdoc eslint-plugin-prefer-arrow eslint-plugin-sort-export-all eslint-plugin-eslint-comments
```
If you're using **Typescript**, install also `@typescript-eslint` related dependencies.
```sh
npm install --save-dev @typescript-eslint/eslint-plugin @typescript-eslint/parser
```
#### Angular
```sh
npm install --save-dev @knodes/eslint-config eslint \
eslint-plugin-import eslint-plugin-jsdoc eslint-plugin-prefer-arrow eslint-plugin-sort-export-all eslint-plugin-eslint-comments \
@typescript-eslint/eslint-plugin @typescript-eslint/parser \
@angular-eslint/eslint-plugin @angular-eslint/eslint-plugin-template @angular-eslint/template-parser
```
#### Without/other framework
See sample .eslintrc.js for Typescript
```js
module.exports = {
env: { /* See https://eslint.org/docs/user-guide/configuring#specifying-environments. es2020 is enabled by default */ },
extends: '@knodes/eslint-config/ts',
parserOptions: {
project: './tsconfig.json',
},
};
```
See sample .eslintrc.js for Javascript
```js
module.exports = {
env: { /* See https://eslint.org/docs/user-guide/configuring#specifying-environments. es2020 is enabled by default */ },
extends: '@knodes/eslint-config/js',
};
```
##### Assumed directory structure
* `*.{j,t}s`: Project configuration files. Light lint rules are applied. It includes `.eslintrc.js`.
* `**`
* `index.[jt]s{x,}`: Barrel files, only exporting other source files
* `*.[jt]s{x,}`: Source files
* `*.{spec,test}.[jt]s{x,}`: Unit test files. Configured for *jest* by default, unless framework use a different test runner
* `__mocks__/**/*.[jt]s{x,}`: Module mocks for unit tests
* `test-utils/**/*.[jt]s{x,}`: Various testing utilities