# max-classes-per-file

> Enforce a maximum number of classes per file

When a file holds several classes, its name can only describe one of them, and the others are hard to find.

Class declarations and class expressions both count. The default maximum is 1.

{/* Generated by src/codegen/lint-rule-docs.ts. Do not edit this section. */}

## Configure

Off by default. To turn it on:

```toml bunfig.toml
[lint.rules]
"max-classes-per-file" = "error" # or "warn"
```

Every option, set to its default:

```toml bunfig.toml
[lint.rules]
"max-classes-per-file" = ["error", {
  max = 1,
  ignoreExpressions = false,
}]
```

{/* End of the generated section. */}

## Examples

Reported:

{/* bad */}
```js
class User {}

class Session {}
```

Not reported:

{/* good */}
```js
class User {}
```

## Options

```toml bunfig.toml
[lint.rules]
max-classes-per-file = ["error", { max = 2, ignoreExpressions = true }]
```

The option is either a number (the maximum) or an object:

| Option | Default | What it does |
| --- | --- | --- |
| `max` | `1` | The number of classes a file can have. |
| `ignoreExpressions` | `false` | Don't count class expressions. |

{/* good {"options": [2]} */}
```js
class User {}

class Session {}
```

{/* bad {"options": [{"max": 2}]} */}
```js
class User {}

class Session {}

class Token {}
```

### `ignoreExpressions`

{/* bad */}
```js
class User {}

const Guest = class extends User {};
```

{/* good {"options": [{"ignoreExpressions": true}]} */}
```js
class User {}

const Guest = class extends User {};
```
