ESLint shareable configuration with great defaults
npm install @hug/eslint-config --save-devyarn add eslint @hug/eslint-config --devSee previous installations section for older requirements.
-
Create an
eslint.config.tsfile at the root of your projectimport { defineConfig } from 'eslint/config'; import hug from '@hug/eslint-config'; export default defineConfig( hug.configs.recommended, // Linter preset hug.configs.stylistic.recommended, // Formatter hug.configs.angular.accessibility.recommended, // Angular accessibility );
import { defineConfig } from 'eslint/config'; import hug from '@hug/eslint-config'; export default defineConfig( hug.configs.eslint.recommended, hug.configs.typescript.recommended, hug.configs.angular.ts.moderate, );
import { defineConfig, globalIgnores } from 'eslint/config'; import hug, { Files } from '@hug/eslint-config'; export default defineConfig( // will add new ignored files globalIgnores(['examples/'], 'my-project/ignores'), // will customize predefined configs hug.configs.createRecommended({ // will disabled the current jsdoc recommended configuration jsdoc: false, // will override files for the current eslint recommended configuration eslint: { files: ['src/**/*.mjs'], } // will add or override rules for the current typescript recommended configuration typescript: { rules: { '@typescript-eslint/prefer-nullish-coalescing': 'off', } } }), // will also add or override rules for the current typescript recommended configuration { name: 'my-project/typescript/overrides', files: Files.TYPESCRIPT, // <- required for the overrides to work rules: { '@typescript-eslint/method-signature-style': ['error', 'property'], } } // will add a completely new set of rules { name: 'my-project/e2e', files: ['e2e/**/*.ts'], plugins: e2ePlugin, rules: { 'e2e-rule': 'error', }, }, );
-
Modify your existing
angular.json"architect": { "lint": { "builder": "@angular-eslint/builder:lint", "options": { "lintFilePatterns": [ "**/*.js", "**/*.json", "**/*.ts", "**/*.html" ] } } }
-
Run
ng lint
ℹ️ You can also skip steps 2 and 3 and simply run:
npx eslint *.{js,json,ts,html}Eslint has made available a great tool to visually inspect and understand your current configurations.
Go to the project root that contains eslint.config.js and run:
npx @eslint/config-inspectorThis package exports a set of rules that enforces good practices.
They may or may not served you well as they are mainly designed to be used by the HUG organization's team.
The following predefined configurations are available:
| Preset | Description |
|---|---|
✅ = hug.configs.recommended |
Strict linter rules. |
☁️ = hug.configs.moderate |
Less strict linter rules. |
You can also use part of those configurations individually:
| Config | Description | ✅ | ☁️ |
|---|---|---|---|
hug.configs.stylistic |
Formatting rules. | ||
hug.configs.eslint |
Eslint rules. | ✅ | |
hug.configs.typescript |
Typescript rules. | ✅ | |
hug.configs.angular.ts |
Angular rules for typescript files. | ✅ | ☁️ |
hug.configs.angular.html |
Angular rules for template files. | ✅ | |
hug.configs.angular.accessibility |
Angular accessibility rules for template files. | ||
hug.configs.rxjs |
Rxjs rules. | ✅ | ☁️ |
hug.configs.rxjsAngular |
Rxjs rules specific to Angular. | ✅ | |
hug.configs.cypress |
Cypress rules. | ✅ | |
hug.configs.jsdoc.js |
Jsdoc rules for javascript files. | ✅ | |
hug.configs.jsdoc.ts |
Jsdoc rules for typescript files | ✅ | |
hug.configs.json |
Rules for json files. | ✅ | |
hug.configs.jsonc |
Rules for jsonc files. | ✅ | |
hug.configs.json5 |
Rules for json5 files | ✅ | |
hug.configs.no-loops |
Disallow use of loops. | ✅ | |
hug.configs.prefer-arrow |
Prefer arrow functions. | ✅ | |
hug.configs.simple-import-sort |
Easily autofix import sorting. | ✅ | |
hug.configs.unused-imports |
Find and remove unused imports. | ✅ | |
hug.configs.no-secrets |
Search for potential secrets/keys in code. | ✅ |
Each configuration can be customized using its own create<Name> property.
Examples:
- hug.configs.
createRecommended(options) - hug.configs.
createStylistic(options) - hug.configs.typescript.
createRecommended(options) - hug.configs.angular.ts.
createModerate(options)
Prior to version v21.x
Create an
.eslintrc.jsonfile at the root of your project
Prior to version v20.2.0
Create a
tsconfig.eslint.jsonfile at the root of your project{ "extends": "./tsconfig.json", "compilerOptions": { "types": [ "node", "jasmine" // // In case you are using WebdriverIO // "@wdio/globals/types" // // In case you are using Cypress // "cypress" // // Any other types that are required by your tests // ... ] }, "include": ["src/**/*.ts", "e2e/**/*.ts"] }
For Angular >= 10.x <= 11.x
npm install @hug/eslint-config@2.x --save-devyarn add eslint@7.x @hug/eslint-config@2.x --dev
Migrating from tslint
- Remove
tslintandcodelyzerfrom your dependencies- Remove any
tslint.jsonconfiguration files- Add
eslintas a dev depe
ESLint shareable configuration with great defaults
npm install @hug/eslint-config --save-devyarn add eslint @hug/eslint-config --devSee previous installations section for older requirements.
-
Create an
eslint.config.tsfile at the root of your projectimport { defineConfig } from 'eslint/config'; import hug from '@hug/eslint-config'; export default defineConfig( hug.configs.recommended, // Linter preset hug.configs.stylistic.recommended, // Formatter hug.configs.angular.accessibility.recommended, // Angular accessibility );
import { defineConfig } from 'eslint/config'; import hug from '@hug/eslint-config'; export default defineConfig( hug.configs.eslint.recommended, hug.configs.typescript.recommended, hug.configs.angular.ts.moderate, );
import { defineConfig, globalIgnores } from 'eslint/config'; import hug, { Files } from '@hug/eslint-config'; export default defineConfig( // will add new ignored files globalIgnores(['examples/'], 'my-project/ignores'), // will customize predefined configs hug.configs.createRecommended({ // will override files for the current angular recommended configuration angular: { files: ['src/**/*.ts'], } // will add or override rules for the current typescript recommended configuration typescript: { rules: { '@typescript-eslint/prefer-nullish-coalescing': 'off', } } }), // will also add or override rules for the current typescript recommended configuration { name: 'my-project/typescript/overrides', files: Files.TYPESCRIPT, // <- required for the overrides to work rules: { '@typescript-eslint/method-signature-style': ['error', 'property'], } } // will add a completely new set of rules { name: 'my-project/e2e', files: ['e2e/**/*.ts'], plugins: e2ePlugin, rules: { 'e2e-rule': 'error', }, }, );
-
Modify your existing
angular.json"architect": { "lint": { "builder": "@angular-eslint/builder:lint", "options": { "lintFilePatterns": [ "**/*.js", "**/*.json", "**/*.ts", "**/*.html" ] } } }
-
Run
ng lint
ℹ️ You can also skip steps 2 and 3 and simply run:
npx eslint *.{js,json,ts,html}Eslint has made available a great tool to visually inspect and understand your current configurations.
Go to the project root that contains eslint.config.ts and run:
npx @eslint/config-inspectorThis package exports a set of rules that enforces good practices.
They may or may not served you well as they are mainly designed to be used by the HUG organization's team.
The following predefined configurations are available:
| Presets | Description |
|---|---|
✅ = hug.configs.recommended |
Strict linter rules. |
☁️ = hug.configs.moderate |
Less strict linter rules. |
Or you can also use configurations individually:
| Config | Description | ✅ | ☁️ |
|---|---|---|---|
hug.configs.stylistic |
Formatting rules. | ||
hug.configs.eslint |
Eslint rules. | ✅ | |
hug.configs.typescript |
Typescript rules | ✅ | |
hug.configs.angular.ts |
Angular rules for typescript files. | ✅ | ☁️ |
hug.configs.angular.html |
Angular rules for template files. | ✅ | |
hug.configs.angular.accessibility |
Angular accessibility rules for template files. | ||
hug.configs.rxjs |
Rxjs rules. | ✅ | ☁️ |
hug.configs.rxjsAngular |
Rxjs rules specific to Angular. | ✅ | |
hug.configs.cypress |
Cypress rules. | ✅ | |
hug.configs.jsdoc.js |
Jsdoc rules for javascript files. | ✅ | |
hug.configs.jsdoc.ts |
Jsdoc rules for typescript files | ✅ | |
hug.configs.json |
Rules for json files. | ✅ | |
hug.configs.jsonc |
Rules for jsonc files. | ✅ | |
hug.configs.json5 |
Rules for json5 files | ✅ | |
hug.configs.no-loops |
Disallow use of loops. | ✅ | |
hug.configs.prefer-arrow |
Prefer arrow functions. | ✅ | |
hug.configs.simple-import-sort |
Easily autofix import sorting. | ✅ | |
hug.configs.unused-imports |
Find and remove unused imports. | ✅ | |
hug.configs.no-secrets |
Search for potential secrets/keys in code. | ✅ |
Each configuration can be customized using its own create<Name> property.
Examples:
- hug.configs.
createRecommended(options) - hug.configs.
createStylistic(options) - hug.configs.typescript.
createRecommended(options) - hug.configs.angular.ts.
createModerate(options)
Prior to version v21.x
Create an
.eslintrc.jsonfile at the root of your project{ "root": true, "extends": [ /** * Possible values: 'recommended (strict) | moderate (less stricter)' */ "@hug/eslint-config/recommended" ] }
Prior to version v20.2.0
Create a
tsconfig.eslint.jsonfile at the root of your project{ "extends": "./tsconfig.json", "compilerOptions": { "types": [ "node", "jasmine" // // In case you are using WebdriverIO // "@wdio/globals/types" // // In case you are using Cypress // "cypress" // // Any other types that are required by your tests // ... ] }, "include": ["src/**/*.ts", "e2e/**/*.ts"] }
For Angular >= 10.x <= 11.x
npm install @hug/eslint-config@2.x --save-devyarn add eslint@7.x @hug/eslint-config@2.x --dev
Migrating from tslint
- Remove
tslintandcodelyzerfrom your dependencies- Remove any
tslint.jsonconfiguration files- Add
eslintas a dev dependency- Have a look at our Angular project example and modify all your
tsconfigfiles accordingly
See the developer docs.
Want to file a bug, contribute some code or improve documentation? Excellent!
But please read up first on the guidelines for contributing, and learn about submission process, coding rules and more.
Please read and follow the Code of Conduct, and help us keep this project open and inclusive.
Copyright (C) 2021 HUG - Hôpitaux Universitaires Genève
ndency
- Have a look at our Angular project example and modify all your
tsconfigfiles accordingly
See the developer docs.
Want to file a bug, contribute some code or improve documentation? Excellent!
But please read up first on the guidelines for contributing, and learn about submission process, coding rules and more.
Please read and follow the Code of Conduct, and help us keep this project open and inclusive.
Copyright (C) 2021 HUG - Hôpitaux Universitaires Genève
{ "root": true, "extends": [ /** * Possible values: 'recommended (strict) | moderate (less stricter)' */ "@hug/eslint-config/recommended" ] }