Skip to main content

typescript-eslint

ESLint integration

Disabling problematic rules

A handful of ESLint rules are not compatible with the TypeScript plugin, or they cause serious performance degradation, and should be disabled entirely. According to the official typescript-eslint.io documentation, most of these rules come from the eslint-plugin-import plugin.

.eslintrc.js
module.exports = {
// ...
rules: {
'import/default': 'off',
'import/named': 'off',
'import/namespace': 'off',
'import/no-cycle': 'off',
'import/no-deprecated': 'off',
'import/no-named-as-default': 'off',
'import/no-named-as-default-member': 'off',
'import/no-unused-modules': 'off',
},
};

Running from the command line

Running within editors

ESLint

Use the dbaeumer.vscode-eslint extension. Too avoid poor performance, do not use ESLint for formatting code (via the eslint-plugin-prettier plugin or something similar), and only use it for linting. The difference in speed is comparable to 100ms vs 2000ms.

.vscode/settings.json
{
// Automatically run all linting fixes on save as a concurrent code action,
// and avoid formatting with ESLint. Use another formatter, like Prettier.
"editor.codeActionsOnSave": ["source.fixAll.eslint"],
"eslint.format.enable": false,

// If linting is *too slow* while typing, uncomment the following line to
// only run the linter on save only.
// "editor.run": "onSave",

// Your package manager of choice.
"eslint.packageManager": "yarn",

// Use the newer and more performant `ESLint` class implementation.
"eslint.useESLintClass": true,

// List of directories that that linter should operate on.
"eslint.workingDirectories": [{ "pattern": "apps/*" }, { "pattern": "packages/*" }]
}

Prettier

Use the esbenp.prettier-vscode extension.

.vscode/settings.json
{
// Use Prettier as the default formatter for all file types. Types not
// supported by Prettier can be overridden using bracket syntax, or ignore files.
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}