npm package: @peculiar/eslint-config-base
Description: Base ESLint configuration for JavaScript/TypeScript linting
Author: PeculiarVentures Team
Latest version: 0.2.9

# @peculiar/eslint-config-base

A base ESLint configuration for modern JavaScript and TypeScript projects. This package integrates recommended configurations from core ESLint, TypeScript, stylistic rules, and the import plugin to provide a comprehensive and consistent coding standard.

## Quick Start

> [!IMPORTANT]  
> If you are using [pnpm](https://pnpm.io/), be sure to create a `.npmrc` file with at least the following settings:
> ```
> auto-install-peers=true
> node-linker=hoisted
> ```
> This ensures that pnpm installs dependencies in a way that is more compatible with npm and is less likely to produce errors.


### Step 1: Install the Package

To install the `@peculiar/eslint-config-base` package, run:

```bash
npm install -D @peculiar/eslint-config-base
```

### Step 2: Configure ESLint

To use `@peculiar/eslint-config-base` in your project, configure your ESLint to extend this configuration.

1. Create or update your ESLint configuration file (e.g., `eslint.config.mjs`).
2. Extend `@peculiar/eslint-config-base` as shown below:

#### Example: `eslint.config.mjs`

```javascript
import tseslint from 'typescript-eslint';
import baseConfig from '@peculiar/eslint-config-base';

export default tseslint.config([
  ...baseConfig,
]);
```

### Step 3: Run the Linter

After setting up, you can run ESLint using the following command:

```bash
npx eslint
```

## Features

This configuration includes:

- **Core ESLint Rules:** Based on [`@eslint/js`](https://www.npmjs.com/package/@eslint/js)'s `recommended` configuration.
- **TypeScript Support:** Includes strict and stylistic configurations from [`@typescript-eslint`](https://typescript-eslint.io/).
- **Stylistic Rules:** Customized rules via [`@stylistic/eslint-plugin`](https://www.npmjs.com/package/@stylistic/eslint-plugin) to enforce code consistency.
- **Import Plugin:** Recommended settings for handling imports using [`eslint-plugin-import`](https://www.npmjs.com/package/eslint-plugin-import).
- **Custom Rules:** Tailored rules for statement padding, object formatting, and more.

## Customizations

Feel free to override or extend the rules in your project-specific ESLint configuration as needed. For example:

### Ignoring Specific Files or Folders

To specify files or folders to ignore in your project, add the following to your ESLint configuration:

```javascript
import tseslint from 'typescript-eslint';
import baseConfig from '@peculiar/eslint-config-base';

export default tseslint.config([
  ...baseConfig,
  {
    // ...
  },
  {
    ignores: [
      '**/dist/*',
      '**/public/*',
    ],
  },
]);
```

### Enabling `any` Type

To allow the use of `any` in your code, add the following to your ESLint configuration:

```javascript
import tseslint from 'typescript-eslint';
import baseConfig from '@peculiar/eslint-config-base';

export default tseslint.config([
  ...baseConfig,
  {
    rules: {
      '@typescript-eslint/no-explicit-any': 'off',
    },
  },
]);
```

### Adding a Custom Rule

```javascript
import tseslint from 'typescript-eslint';
import baseConfig from '@peculiar/eslint-config-base';

export default tseslint.config([
  ...baseConfig,
  {
    rules: {
      'your-custom-rule': 'warn',
    },
  },
]);
```

## License

This project is licensed under the MIT License.