@dittmar/shared-angular-configs
v1.0.8
Published
Shared ESLint, Prettier, and TypeScript configurations for Angular projects (ESLint 9+ Flat Config)
Maintainers
Readme
@dittmar/shared-angular-configs
Shared ESLint, Prettier, and TypeScript configurations for Angular projects using ESLint 9+ Flat Config.
📖 Upgrading from ESLint 8? See the Migration Guide for step-by-step instructions.
Installation
npm install --save-dev @dittmar/shared-angular-configsUsage
ESLint Configuration
Create or update your eslint.config.js file (ESLint 9+ flat config):
eslint.config.js
const sharedConfig = require('@dittmar/shared-angular-configs');
module.exports = sharedConfig;Extending the Configuration
You can extend and customize the shared config:
const sharedConfig = require('@dittmar/shared-angular-configs');
module.exports = [
...sharedConfig,
{
// Your custom rules
rules: {
'@typescript-eslint/no-explicit-any': 'error',
'no-console': 'off',
},
},
{
// Override Angular selector prefixes
files: ['**/*.ts'],
rules: {
'@angular-eslint/component-selector': [
'error',
{
type: 'element',
prefix: ['my-app'],
style: 'kebab-case',
},
],
'@angular-eslint/directive-selector': [
'error',
{
type: 'attribute',
prefix: ['myApp'],
style: 'camelCase',
},
],
},
},
];TypeScript Configuration
Extend the base TypeScript config in your tsconfig.json:
{
"extends": "@dittmar/shared-angular-configs/tsconfig.base.json",
"compilerOptions": {
"outDir": "./dist/out-tsc",
"baseUrl": "./",
"paths": {
"@app/*": ["src/app/*"],
"@environments/*": ["src/environments/*"]
}
},
"files": [],
"include": [
"src/**/*.d.ts"
]
}Prettier Configuration
Extend the Prettier config by creating a .prettierrc.js file:
module.exports = {
...require('@dittmar/shared-angular-configs/prettier.config.js'),
};Or reference it directly in your package.json:
{
"prettier": "@dittmar/shared-angular-configs/prettier.config.js"
}Or create a .prettierrc.json:
"@dittmar/shared-angular-configs/prettier.config.js"Customizing Prettier
You can override any settings:
// .prettierrc.js
const baseConfig = require('@dittmar/shared-angular-configs/prettier.config.js');
module.exports = {
...baseConfig,
printWidth: 100, // Override base setting
semi: false, // Override base setting
};npm Configuration (.npmrc)
Copy the shared npmrc file to your project root as .npmrc:
cp node_modules/@dittmar/shared-angular-configs/npmrc .npmrcOr manually create a .npmrc file with the shared settings. The shared configuration includes:
- Exact version saving - No
^or~in package.json - Package lock enabled - For consistent installs
- Engine strict - Enforce Node.js version requirements
- Moderate audit level - Security vulnerability checking
You can override any settings by adding your own values to your project's .npmrc file.
What's Included
ESLint Rules
This package provides a modern ESLint 9+ flat config with:
- @eslint/js recommended rules
- TypeScript ESLint rules for type-safe code
- Angular ESLint rules for Angular best practices
- Accessibility rules for templates
- Code style consistency rules
Key features:
- Component and directive naming conventions (customizable prefixes: 'app', 'lib')
- Modern Angular best practices:
- Prefer standalone components (
@angular-eslint/prefer-standalone) - Prefer inject function (
@angular-eslint/prefer-inject) - Prefer OnPush change detection (
@angular-eslint/prefer-on-push-component-change-detection)
- Prefer standalone components (
- Spacing and formatting rules for consistency
- TypeScript strict rules with pragmatic defaults
- Template best practices and accessibility checks
- Global browser API definitions
TypeScript Configuration
The base TypeScript config includes:
- Strict mode enabled
- ES2022 target and module support
- Experimental decorators for Angular
- Source maps for debugging
- Angular compiler options with strict templates
- Import helpers for cleaner compiled output
Prettier Configuration
The Prettier config includes:
- 80 character line width (200 for HTML templates)
- Single quotes for TypeScript/JavaScript
- Trailing commas everywhere
- 2 spaces indentation
- LF line endings
- Angular parser for HTML templates with single attribute per line
- File-specific overrides for
.ts,.html, and.scss
npm Configuration
The shared .npmrc includes:
- Exact versioning (
save-exact=true) - No^or~prefixes - Package lock enabled for consistent installs
- Engine strict mode for Node.js version enforcement
- Moderate audit level for security checks
- Optimized settings for team consistency
Peer Dependencies
Make sure you have these dependencies installed in your project:
npm install --save-dev \
@angular-eslint/eslint-plugin \
@angular-eslint/eslint-plugin-template \
@angular-eslint/template-parser \
@eslint/js \
@typescript-eslint/eslint-plugin \
@typescript-eslint/parser \
eslint \
prettier \
typescriptNote: This package requires ESLint 9+ for flat config support and Prettier 3+.
Scripts
Add these scripts to your package.json:
{
"scripts": {
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"format": "prettier --write \"src/**/*.{ts,html,scss,css,json}\"",
"format:check": "prettier --check \"src/**/*.{ts,html,scss,css,json}\""
}
}License
MIT
Contributing
Issues and pull requests are welcome!
Changelog
1.0.0
- Initial release
- ESLint 9+ flat config for Angular projects
- Prettier configuration with Angular-specific settings
- TypeScript base configuration
- Support for Angular 17+ and TypeScript 5+
- Support for Angular 17+ and TypeScript 5+