An ESLint shareable config for TypeScript that is based on eslint-config-standard and has TypeScript specific rules from @typescript-eslint/eslint-plugin.
This package specifies the following peerDependencies
:
- TypeScript, which you may already have installed
- ESLint
- 3 Peer dependencies of eslint-config-standard
- @typescript-eslint/eslint-plugin; ESLint rules for TypeScript.
Yes, this is a large number of peerDependencies
.
This is due to a known limitation in ESLint.
This package has @typescript-eslint/parser
in dependencies
.
And it has @typescript-eslint/eslint-plugin
in peerDependencies
.
Both are specified as ranges.
It's probably safest for the installed versions of these packages to be the same.
This can be achieved by:
- Pin (exact version) the
@typescript-eslint/eslint-plugin
inpackage.json
. - Have a
package-lock.json
which locks the version of the@typescript-eslint/parser
sub-dependency.
And both pin/lock to the same version.
npm@<7
does not automatically install peerDependencies
,
so if that's what you're using, install them manually.
Here is an example, but use it only for reference,
because your decisions regarding version ranges and range specifiers may vary.
npm install --save-dev \
typescript@\* \
eslint@^8.0.1 \
eslint-plugin-promise@^6.0.0 \
eslint-plugin-import@^2.25.2 \
eslint-plugin-n@^15.0.0 \
@typescript-eslint/eslint-plugin@^6.1.0 \
eslint-config-standard-with-typescript@latest
Here is an example .eslintrc.js
.
Pay close attention to the files
property, because it determines which files are linted.
module.exports = {
overrides: [
{
files: ['*.js', '*.jsx', '*.ts', '*.tsx'],
extends: 'standard-with-typescript'
}
],
}
Note: the config exported by this package sets parserOptions.project = true
.
Read about the project
option here.
There are some more parserOptions
you may care about.
$ npx eslint .