@lcooper/eslint-config-typescript v2.0.0
@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-typescriptinstall 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