eslint-plugin-next-route-params
Version:
eslint rule to enforce correct route parameters for Next.js
103 lines (75 loc) • 2.95 kB
Markdown
# eslint-plugin-next-route-params
This ESLint plugin ensures that only the correct parameters are used in Next.js routes based on the file-based routing system. This is particularly useful in Next.js applications where route parameters are predefined and should be enforced at compile-time.
<a href="https://www.npmjs.com/package/eslint-plugin-next-route-params" target="\_parent">
<img alt="" src="https://img.shields.io/npm/dm/eslint-plugin-next-route-params.svg" />
## Installation
To use this plugin, you need to have ESLint installed. You can install ESLint and the plugin using npm or yarn:
```bash
npm install eslint eslint-plugin-next-route-params --save-dev
# or
yarn add eslint eslint-plugin-next-route-params --dev
```
## Usage
Add `next-route-params` to the plugins section of your ESLint configuration file (e.g., `.eslintrc.json`):
```json
{
"plugins": ["next-route-params"],
"rules": {
"next-route-params/enforce-route-params": "error"
}
}
```
## Rule Details
The `next-route-params/enforce-route-params` rule checks that only the correct parameters are used in your Next.js routes. This rule uses the file-based routing system of Next.js to determine the allowed parameters for each route.
<!-- begin auto-generated rules list -->
🔧 Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).
| Name | Description | 🔧 |
| :--------------------------------------------------------- | :------------------------------------------------------------------- | :-- |
| [enforce-route-params](docs/rules/enforce-route-params.md) | enforce correct route parameters built by Next.js' file based routes | 🔧 |
<!-- end auto-generated rules list -->
### Options
This rule does not take any options.
### Examples
Given the following file structure:
```
app/
├── home
│ ├ route.tsx
├── blog
│ ├──[id]
│ | ├──page.tsx
│ └── [category]
│ └── [post]
│ └──page.tsx
```
The following are considered warnings/errors:
```tsx
//app/blog/[id]/page.tsx
export default function Blog({
params: { id, category },
}: {
params: {
id: string;
category: string;
};
}) {
// 'category' is not a valid parameter for this page
return (
<div>
{category}-{id}
</div>
);
}
```
The following are considered correct:
```tsx
// app/blog/[id]/page.tsx
export default function Blog({ params: { id } }: { params: { id: string } }) {
// 'id' is a valid parameter for this page
return <div>{id}</div>;
}
```
## Contributing
Contributions are welcome! Please open an issue or submit a pull request if you have any suggestions or improvements.
## License
This project is licensed under the MIT License.