@lcooper/eslint-config-typescript
v2.0.0
Published
Shareable ESLint config for Typescript projects
Downloads
18
Maintainers
Readme
@lcooper/eslint-config-typescript
An ESlint shareable flat config for TypeScript projects. Extends @lcooper/eslint-config
.
Installation
The peer dependency eslint
must be installed alongside this package.
install with npm:
npm install -D eslint @lcooper/eslint-config-typescript
install with yarn:
yarn add -D eslint @lcooper/eslint-config-typescript
Additionally, typescript
must be installed.
Note: This project requires Eslint version
>=8.56
, NodeJS version^18.18.0 || >=20.0.0
, and Typescript version>=4.7.4
.
Usage
This config enables some of the type-aware rules provided by @typescript-eslint/eslint-plugin
, so you must provide a tsconfig file to the parserOptions.project
field within the languageOptions
in your eslint.config.js
file. See this page in the typescript-eslint docs for more info.
Additionally, you must provide your tsconfig file to the import/resolver
typescript setting for eslint-plugin-import
to work properly.
The best way to do this is to create a tsconfig.eslint.json
file that will just be used for linting. It can extend your base tsconfig.json
.
tsconfig.eslint.json
{
"extends": "./tsconfig.json",
"compilerOptions": {
"noEmit": true
},
"include": ["**/*", "eslint.config.js"]
}
Then, create an eslint.config.js
file in your project's root directory:
import config from '@lcooper/eslint-config-typescript';
export default [
...config,
{
languageOptions: {
parserOptions: {
project: './tsconfig.eslint.json',
tsconfigRootDir: import.meta.dirname,
},
},
settings: {
'import/resolver': {
typescript: {
project: './tsconfig.eslint.json',
},
},
},
},
];
If your project does not specify "type": "module"
in its package.json
file, then eslint.config.js
must be in CommonJS format:
const config = require('@lcooper/eslint-config-typescript');
module.exports = [
...config,
{
languageOptions: {
parserOptions: {
project: './tsconfig.eslint.json',
tsconfigRootDir: __dirname,
},
},
settings: {
'import/resolver': {
typescript: {
project: './tsconfig.eslint.json',
},
},
},
},
];
This project is no longer compatable with the legacy eslintrc format, and requires you use the flat config format. Check out this page for more details about migrating from the eslintrc format to the flat config format.
Related
@lcooper/eslint-config
- Base config for standard JavaScript projects@lcooper/eslint-plugin
- Plugin with awesome extra ESLint rules used by this config@lcooper/eslint-config-react
- Enhancement config for React projects@lcooper/eslint-config-typescript-react
- Enhancement config for React projects that use TypeScript@lcooper/eslint-config-jest
- Enhancement config for projects using Jest