docs/getting-started/Quickstart.mdx
import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';
This page is a quick-start for ESLint's new "flat" config format to go from zero to linting with our recommended rules on your TypeScript code as quickly as possible.
:::note
:::
First, install the required packages for ESLint, TypeScript, and our tooling:
npm install --save-dev eslint @eslint/js typescript typescript-eslint
Next, create an eslint.config.mjs config file in the root of your project, and populate it with the following:
// @ts-check
import js from '@eslint/js';
import { defineConfig } from 'eslint/config';
import tseslint from 'typescript-eslint';
export default defineConfig(
js.configs.recommended,
tseslint.configs.recommended,
);
This code will enable our recommended configuration for linting.
defineConfig(...) is an optional helper function built in to current versions of ESLint. See the ESLint configuration docs for more detail.'@eslint/js' / js.configs.recommended turns on eslint's recommended config.tseslint.configs.recommended turns on our recommended config.The .mjs extension makes the file use the ES modules (ESM) format. Node interprets .js files in the CommonJS (CJS) format by default, but if you have "type": "module" in your package.json, you can also use eslint.config.js.
Open a terminal to the root of your project and run the following command:
<Tabs groupId="npm2yarn"> <TabItem value="npm">npx eslint .
yarn eslint .
pnpm eslint .
ESLint will lint all TypeScript compatible files within the current folder, and will output the results to your terminal.
If you're having problems getting this working, please have a look at our Troubleshooting & FAQs.
We recommend you consider enabling the following two configs:
strict: a superset of recommended that includes more opinionated rules which may also catch bugs.stylistic: additional rules that enforce consistent styling without significantly catching bugs or changing logic.export default defineConfig(
js.configs.recommended,
// Remove this line
tseslint.configs.recommended,
// Add this line
tseslint.configs.strict,
// Add this line
tseslint.configs.stylistic,
);
You can read more about these in our shared configurations docs.
We also provide a plethora of powerful rules that utilize the power of TypeScript's type information. Visit the next page for a typed rules setup guide.