@ndbs-dk/eslint-plugin-cap
v1.0.3
Published
NDBS-DK ESLint rules for SAP CAP projects
Downloads
25
Readme
📦 @ndbs/eslint-plugin-cap
Corporate ESLint 9 (Flat Config) plugin providing opinionated code-quality rules for SAP CAP projects.
🚀 Installation
npm install --save-dev @ndbs-dk/eslint-plugin-cap
# or
yarn add -D @ndbs-dk/eslint-plugin-cap📦 Peer Dependencies
Make sure the following packages are installed (CAP projects usually have them):
npm install --save-dev eslint@^9 @sap/cds @typescript-eslint/parser @typescript-eslint/eslint-plugin jsonc-eslint-parser🧩 Usage (Flat Config – ESLint v9+)
Create a file named eslint.config.mjs in your project root:
import cds from '@sap/cds/eslint.config.mjs'
import tseslint from '@typescript-eslint/eslint-plugin'
import tsParser from '@typescript-eslint/parser'
import jsoncParser from 'jsonc-eslint-parser'
import ndbsPlugin from '@ndbs-dk/eslint-plugin-cap'
export default [
// CAP/CDS rules
...cds.recommended,
// TypeScript files
{
files: ['**/*.ts', '**/*.tsx'],
languageOptions: {
parser: tsParser,
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module'
}
},
plugins: {
'@typescript-eslint': tseslint,
'@ndbs/cap': ndbsPlugin
},
rules: {
'@typescript-eslint/no-explicit-any': 'off',
'@ndbs/cap/no-explicit-any': 'error',
'@ndbs/cap/filename-kebab-4-words': ['error', { maxWords: 4 }]
}
},
// package.json validation
{
files: ['package.json'],
languageOptions: { parser: jsoncParser },
plugins: { '@ndbs-dk/cap': ndbsPlugin },
rules: {
'@ndbs-dk/cap/project-name': 'error'
}
}
]Then run:
npx eslint . --ext .ts,.js,.json⚙️ Rules
| Rule | Description | Default |
| -------------------------------------- | --------------------------------------------------------------------------- | --------- |
| @ndbs-dk/cap/filename-kebab-4-words | Enforces kebab-case filenames with max 4 words; forbids _ and extra dots. | ✅ error |
| @ndbs-dk/cap/no-explicit-any | Disallows TypeScript any type. | ✅ error |
| @ndbs-dk/cap/project-name | Ensures package.json:name is kebab-case ≤4 words and matches folder name. | ✅ error |
🧬 Examples
✅ Correct filenames
ndbs-demo-cap-app.ts❌ Invalid filenames
NDBS-Demo-Cap-App.ts # uppercase
ndbs_demo_cap_app.ts # underscore
ndbs-demo-cap-ui5-build.ts # 5 words (>4)❌ any usage
// Bad
const x: any = 1;
// Good
const x: number = 1;❌ Invalid package.json
{
"name": "Ndbs-Cap-App"
}✅ Correct:
{
"name": "ndbs-cap-app"
}🧱 CI/CD Integration
Add this step to your pipeline:
npx eslint . --max-warnings=0Or add a script in package.json:
"scripts": {
"lint": "eslint . --ext .ts,.js,.json --max-warnings=0"
}🔖 Versioning
Follow Semantic Versioning (SemVer):
- Patch – small fixes or internal improvements
- Minor – new rule addition
- Major – breaking rule rename or logic change
Update & publish:
npm version patch | minor | major
npm publish👥 Maintainers
- gizemsoylutr
- Contact: [email protected]
📄 License
MIT License © 2025 NDBS-DK
