@stack-lint/base
Version:
stack lint eslint configs
202 lines (141 loc) • 4.06 kB
Markdown
# @stack-lint/base
Base ESLint flat configuration for ESLint v9+.
Includes Prettier integration and works with the ESLint **flat config** system (ESM).
This package serves as the foundation for other `@stack-lint` configurations like React, Node, Web, and TypeScript.
## 📦 Installation
```sh
npm install --save-dev eslint prettier @stack-lint/base
# or
yarn add -D eslint prettier @stack-lint/base
# or
pnpm add -D eslint prettier @stack-lint/base
```
## 🚀 Usage
You can combine `@stack-lint/base` with other `@stack-lint` configs depending on your project type.
### 1️⃣ Base Only
**eslint.config.js** (or **eslint.config.mjs** if not `"type": "module"`):
```js
import getFlatConfigs from '@stack-lint/base';
export default getFlatConfigs();
```
### 2️⃣ Base Web
**eslint.config.js**:
```js
import getWebFlatConfigs from '@stack-lint/base/web';
export default getWebFlatConfigs();
```
### 3️⃣ Base + React
```bash
npm install --save-dev @stack-lint/react
# or
yarn add -D @stack-lint/react
# or
pnpm add -D @stack-lint/react
```
**eslint.config.js**:
```js
import getFlatConfigs from '@stack-lint/base';
import reactConfigs from '@stack-lint/react';
export default getFlatConfigs(...reactConfigs);
```
### With Next Js
**eslint.config.js**:
```js
import getFlatConfigs from '@stack-lint/base';
import nextConfigs from '@stack-lint/react/next';
export default getFlatConfigs(...nextConfigs);
```
### 4️⃣ Base + Node
```bash
npm install --save-dev @stack-lint/node
# or
yarn add -D @stack-lint/node
# or
pnpm add -D @stack-lint/node
```
**eslint.config.js**:
```js
import getFlatConfigs from '@stack-lint/base';
import getNodeConfig from '@stack-lint/node';
export default getFlatConfigs(getNodeConfig(true)); // true if ESM, false or omit if CJS
```
### 5️⃣ Base + TypeScript
```bash
npm install --save-dev @stack-lint/typescript typescript
# or
yarn add -D @stack-lint/typescript typescript
# or
pnpm add -D @stack-lint/typescript typescript
```
**eslint.config.js**:
```js
import getFlatConfigs from '@stack-lint/base';
import getTsConfigs from '@stack-lint/typescript';
export default getFlatConfigs(
...getTsConfigs({
tsconfigRootDir: import.meta.dirname,
// tsRootDir: 'src/' your tsconfigs files rootDir, if * then no need the field
}),
);
```
### 6️⃣ Base + React + TypeScript
```bash
npm install --save-dev @stack-lint/react @stack-lint/typescript typescript
# or
yarn add -D @stack-lint/react @stack-lint/typescript typescript
# or
pnpm add -D @stack-lint/react @stack-lint/typescript typescript
```
**eslint.config.js**:
```js
import getFlatConfigs from '@stack-lint/base';
import reactConfigs from '@stack-lint/react';
import getTsConfigs from '@stack-lint/typescript';
export default getFlatConfigs(
...reactConfigs,
...getTsConfigs({ tsconfigRootDir: import.meta.dirname }),
);
```
### 7️⃣ Base + Node + TypeScript
```bash
npm install --save-dev @stack-lint/node @stack-lint/typescript typescript
# or
yarn add -D @stack-lint/node @stack-lint/typescript typescript
# or
pnpm add -D @stack-lint/node @stack-lint/typescript typescript
```
**eslint.config.js**:
```js
import getFlatConfigs from '@stack-lint/base';
import getNodeConfig from '@stack-lint/node';
import getTsConfigs from '@stack-lint/typescript';
export default getFlatConfigs(
getNodeConfig(true), // true if ESM, false or omit if CJS
...getTsConfigs({
tsconfigRootDir: import.meta.dirname,
// tsRootDir: 'src/' your tsconfigs files rootDir, if * then no need the field
}),
);
```
## 📖 Notes
- ESLint v9+ **only** supports the new flat config system.
Instead of `.eslintrc`, you define your config in `eslint.config.js` or `eslint.config.mjs`.
- If your project is **not** `"type": "module"`, rename the file to `eslint.config.mjs`.
More info: [ESLint New Config System – Part 2](https://eslint.org/blog/2022/08/new-config-system-part-2/)
## ✅ Run ESLint
```bash
npx eslint .
```
## 📜 License
MIT