@dg-scripts/eslint-config
Version:
ESLint configuration used by dg-scripts.
158 lines (120 loc) • 4.52 kB
Markdown
# @dg-scripts/eslint-config
[](https://github.com/sabertazimi)
[](https://raw.githubusercontent.com/sabertazimi/bod/main/LICENSE)
[](https://www.npmjs.com/package/@dg-scripts/eslint-config)
[](https://www.npmjs.com/package/@dg-scripts/eslint-config)
[](https://cdn.jsdelivr.net/npm/@dg-scripts/eslint-config@latest/)
[](https://github.com/sabertazimi/bod/actions/workflows/ci.yml)
[](https://codecov.io/gh/sabertazimi/bod)
This package includes the shareable ESLint configuration used by [Bod CLI](https://github.com/sabertazimi/bod).
## Installation
```bash
npm install -D @dg-scripts/eslint-config
```
## Usage
### Basic Usage
Create a file named `eslint.config.js`
with following contents in the root folder of your project:
```js
export { default } from '@dg-scripts/eslint-config'
```
### With Custom Options
Use `defineConfig` to customize the configuration:
```js
import { defineConfig } from '@dg-scripts/eslint-config'
export default defineConfig({
// Customize TypeScript options
typescript: {
tsconfigPath: './path/to/tsconfig.json', // Custom tsconfig path
},
// Disable some opinionated rules
lessOpinionated: true,
// Other options from @antfu/eslint-config
})
```
### With Additional Rules
You can override or add rules by using `defineConfig` with additional configs (recommended):
```js
import { defineConfig } from '@dg-scripts/eslint-config'
export default defineConfig(
{
typescript: {
tsconfigPath: 'tsconfig.json',
},
},
{
name: 'cypress',
ignores: ['cypress', 'cypress.config.ts'],
},
{
name: 'react',
rules: {
'react-refresh/only-export-components': 'off',
},
},
)
```
```js
import { defineConfig } from '@dg-scripts/eslint-config'
export default defineConfig(
{
name: 'base',
rules: {
'node/prefer-global/process': 'off',
'react-refresh/only-export-components': 'off',
},
},
{
name: 'ui',
files: ['src/components/ui/*.tsx'],
rules: {
'react/no-children-map': 'off',
'react/no-clone-element': 'off',
},
},
)
```
Or by chaining methods (not recommended):
```js
import eslintConfig from '@dg-scripts/eslint-config'
export default eslintConfig
.append({
name: 'cypress',
ignores: ['cypress', 'cypress.config.ts'],
})
.append({
name: 'react',
rules: {
'react-refresh/only-export-components': 'off',
},
})
```
## Type-Aware Rules
By default, type-aware [rules](https://typescript-eslint.io/getting-started/typed-linting) are **enabled** with `tsconfigPath: 'tsconfig.json'`.
The configuration will automatically look for `tsconfig.json` in your project root.
If your `tsconfig.json` is in a different location, you can customize it:
```js
import { defineConfig } from '@dg-scripts/eslint-config'
export default defineConfig({
typescript: {
tsconfigPath: './path/to/tsconfig.json',
},
})
```
To disable type-aware rules:
```js
import { defineConfig } from '@dg-scripts/eslint-config'
export default defineConfig({
typescript: true, // Enable TypeScript support without type-aware rules
})
```
## Next.js
When package `next` and `@next/eslint-plugin-next` are installed in your project,
the Next.js configuration will be enabled automatically.
No additional configuration is required.
## Rules
See [ESLint inspector report](https://tazimi.dev/bod/eslint) for more details.
## Contact
[](mailto:sabertazimi@gmail.com)
[](https://x.com/sabertazimi)
[](https://github.com/sabertazimi)