2.0.0 • Published 1 month ago

@lcooper/eslint-config-typescript v2.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

@lcooper/eslint-config-typescript

npm ci license

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

License

MIT

2.0.0

1 month ago

1.3.0

1 year ago

1.2.1

2 years ago

1.2.0

3 years ago

1.1.4

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago