@ebarooni/eslint-config
v1.3.0
Published
A shareable ESLint configuration for JavaScript, TypeScript, Angular, Markdown, and JSON projects
Maintainers
Readme
@ebarooni/eslint-config
A shareable and extensible ESLint configuration for JavaScript, TypeScript, Angular, Markdown, and JSON projects.
Prerequisites
Ensure the required peer dependencies are installed:
npm install -D eslint @eslint/js @eslint/markdown @eslint/json typescript typescript-eslint angular-eslint eslint-config-prettier eslint-plugin-promiseFor TypeScript projects, consider creating a tsconfig.eslint.json file to prevent issues with project-wide type checking:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"noEmit": true
},
"include": ["src", "test", "tools"]
}Installation
To install the ESLint configuration package, run:
npm install -D @ebarooni/eslint-configUsage
JavaScript ESLint Configuration
For JavaScript projects that don’t use TypeScript:
Ensure "type": "module" is set in package.json:
{
"name": "my-project",
"type": "module"
}Then, create eslint.config.js or eslint.config.mjs:
import eb from "@ebarooni/eslint-config";
export default {
...eb.javascript,
files: ["*.js", "*.mjs"],
ignores: ["*.html"],
};TypeScript ESLint Configuration
For TypeScript projects, extending the JavaScript configuration:
// @ts-check
import eb from "@ebarooni/eslint-config";
import tseslint from "typescript-eslint";
export default tseslint.config(...eb.typescript, {
languageOptions: {
parserOptions: {
project: ["./tsconfig.eslint.json", "./packages/*/tsconfig.json"],
tsconfigRootDir: import.meta.dirname,
},
},
});Angular ESLint Configuration
For Angular projects, extending the TypeScript configuration:
// @ts-check
import eb from "@ebarooni/eslint-config";
import tseslint from "typescript-eslint";
export default tseslint.config(...eb.angular, {
languageOptions: {
parserOptions: {
project: ["**/tsconfig*.json"],
tsconfigRootDir: import.meta.dirname,
},
},
});Markdown ESLint Configuration
To enable linting for Markdown files:
import eb from "@ebarooni/eslint-config";
export default {
eb.markdown,
files: ["*.md"]
};JSON ESLint Configuration
To enable linting for JSON files:
import eb from "@ebarooni/eslint-config";
export default {
eb.json,
files: ["*.json"]
};Helper Scripts
To simplify linting and fixing errors, add these scripts to your package.json:
{
"scripts": {
"eslint": "npx eslint",
"eslint:check": "npm run eslint -- .",
"eslint:fix": "npm run eslint . --fix"
}
}Run these commands:
- Check for linting issues:
npm run eslint:check - Automatically fix linting errors:
npm run eslint:fix
Customizing the Configuration
This ESLint config is extensible, allowing you to customize it for your project.
Custom Rules
To override specific rules, extend the configuration in eslint.config.js:
import eb from "@ebarooni/eslint-config";
export default {
...eb.typescript,
rules: {
"no-console": "off",
indent: ["error", 4],
},
};Directory-Specific Rules
If you want different rules per directory:
import eb from "@ebarooni/eslint-config";
export default [
{
...eb.javascript,
files: ["src/**/*.js"],
},
{
...eb.typescript,
files: ["src/**/*.ts"],
},
{
...eb.markdown,
files: ["docs/**/*.md"],
},
{
...eb.json,
files: ["config/**/*.json"],
},
];