@m-one-dev/awesome-nest-eslint
v1.0.2
Published
Opinionated ESLint plugin with NestJS-aware rules used across m-one projects.
Maintainers
Readme
@m-one-dev/awesome-nest-eslint
Opinionated ESLint plugin with NestJS-aware, TypeScript-aware rules used across m-one projects.
Install
npm install -D @m-one-dev/awesome-nest-eslint
# or
pnpm add -D @m-one-dev/awesome-nest-eslint
# or
yarn add -D @m-one-dev/awesome-nest-eslintUsage (flat config)
// eslint.config.ts
import awesomeNest from '@m-one-dev/awesome-nest-eslint';
import { defineConfig } from 'eslint/config';
export default defineConfig(
// ... your other configs
awesomeNest.configs.recommended,
);configs.recommended registers the plugin and turns on:
| Rule | Severity | Files |
|---|---|---|
| awesome-nest/no-typeorm-finder-methods | error | all |
| awesome-nest/payload-type-suffix | error | all |
| awesome-nest/unique-endpoint-dtos | error | all |
| awesome-nest/dto-must-extend-abstract-or-base | error | **/*.dto.ts, **/dto/**/*.ts |
configs.all enables every rule at error severity, no file scoping.
Rules
awesome-nest/no-typeorm-finder-methods— bans TypeORM entity-read finders, auto-fixes tocreateQueryBuilderchains.awesome-nest/no-unused-injectable— flags@Injectable()services that are only registered in@Module()decorators (or nowhere) and never consumed.awesome-nest/dto-must-extend-abstract-or-base— DTOs must transitively extendAbstractDto/BaseDto.awesome-nest/payload-type-suffix— NATS payload types must end withPayloadDto/ pagination DTO suffixes.awesome-nest/unique-endpoint-dtos— each endpoint slot (@Body,@Query, response) must use its own DTO across the project.
Requirements
All rules are TypeScript-aware. Your ESLint config must use @typescript-eslint/parser with a typed parser service:
parserOptions: {
projectService: true,
// or: project: ['./tsconfig.json'],
tsconfigRootDir: import.meta.dirname,
}Peer dependencies:
eslint >= 9typescript >= 5.4@typescript-eslint/parser >= 8
Development
pnpm install
pnpm build
pnpm testReleasing
Releases are tag-driven. Bump the version in package.json, commit, then tag:
git add package.json
git commit -m "chore: bump version to x.y.z"
git tag vx.y.z
git push --follow-tagsThe publish.yml workflow runs install → build → test → pnpm publish on every v* tag and pushes to npmjs.com using the NPM_TOKEN repository secret.
