Skip to content

shine-jung/eslint-plugin-nestjs-route

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

36 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

npm version npm downloads license Build Status Coverage Status code style: prettier semantic-release

๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด README ๋ณด๊ธฐ | ๐ŸŒ Try Online Playground

eslint-plugin-nestjs-route

ESLint rules for NestJS route management - ensure proper route ordering and prevent duplicates.

Installation

npm install --save-dev eslint-plugin-nestjs-route

ESLint config example

ESLint v9+ (Flat Config):

// eslint.config.js
const nestjsRoute = require("eslint-plugin-nestjs-route");

module.exports = [
  {
    files: ["**/*.ts"],
    plugins: {
      "nestjs-route": nestjsRoute,
    },
    rules: {
      "nestjs-route/order": "error",
      "nestjs-route/no-duplicates": "error",
    },
  },
];

ESLint v8 and below (Legacy Config):

{
  "plugins": ["nestjs-route"],
  "rules": {
    "nestjs-route/order": "error",
    "nestjs-route/no-duplicates": "error"
  }
}

Rules

nestjs-route/order

Ensures static routes are placed before parameterized routes in NestJS controllers.

  • Enforces that static routes (e.g., 'me') are placed before parameterized routes (e.g., ':id') in NestJS controllers.
  • Prevents unexpected routing bugs caused by route order.
  • Auto-fixable: Routes can be automatically reordered using --fix option.

nestjs-route/no-duplicates

Prevents duplicate route definitions within the same controller.

  • Detects when the same HTTP method and path combination is defined multiple times.
  • Helps avoid routing conflicts and unexpected behavior.

Supported Decorators

  • @Get, @Post, @Put, @Delete, @Patch, @All, @Options, @Head

Auto-fix

The nestjs-route/order rule supports automatic fixing. Use ESLint with the --fix flag to automatically reorder routes:

npx eslint --fix your-file.ts

Rule Examples

Route Order

// Correct
@Get('me')
@Get(':id')

// Incorrect (will be auto-fixed)
@Get(':id')
@Get('me') // Error: static route should be placed before parameter route

No Duplicates

// Correct
@Get('users')
@Post('users') // Different HTTP method - OK

// Incorrect
@Get('users')
@Get('users') // Error: duplicate route

Options

  • locale: Set the error message language (default: 'en')
    • "en": English
    • "ko": Korean

Example:

"rules": {
  "nestjs-route/order": ["error", { "locale": "ko" }],
  "nestjs-route/no-duplicates": ["error", { "locale": "ko" }]
}

Error Message Examples

Route Order

  • English: Static route ('me') should be placed before parameter route (':id').
  • Korean: ๊ณ ์ • ๋ผ์šฐํŠธ('me')๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ๋ผ์šฐํŠธ(':id')๋ณด๋‹ค ์œ„์— ์œ„์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

No Duplicates

  • English: Duplicate route Get('users') found. Each route should be unique within a controller.
  • Korean: ์ค‘๋ณต๋œ ๋ผ์šฐํŠธ Get('users')๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ ๋‚ด์—์„œ ๊ฐ ๋ผ์šฐํŠธ๋Š” ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Contributing

Pull requests and issues are welcome!

License

MIT

About

ESLint plugin for NestJS route management - ensures proper route ordering and prevents duplicates with auto-fix support

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •