Skip to content

krauters/eslint-config

Repository files navigation

LinkedIn License visitors

Version npm version GitHub Stars Forks

GitHub Issues Open PRs Commits per Month Contributors Last Commit

install size Code Size Repo Size

ESLint Config

This configuration integrates ESLint and TypeScript ESLint, built to ensure clean, consistent, and maintainable code in JavaScript and TypeScript projects.

Tenets

  1. Feedback Loops: In DevOps, feedback loops are essential. Realtime linting gives developers instant insight, allowing faster fixes and smoother workflows. So, configure your IDE to provide linting feedback as you type.

  2. Code Consistency: Linting ensures uniform coding standards across the team, reducing errors and enhancing collaboration by maintaining clarity and readability.

Rules

All linting rules are defined in rules.js. This configuration offers a strong foundation suitable for most projects, promoting code quality from the start while remaining flexible for customization.

Usage

Commands You Need

# Check if your code passes lint rules
npm run lint

# Fix what can be auto-fixed
npm run fix

Using this Lint Config in Your Project

  1. Install the necessary dependencies:
npm install @krauters/eslint-config --save-dev
  1. Add a config file eslint.config.js to the root of your project with the following contents,

ESM

// eslint.config.js

import eslintConfig from '@krauters/eslint-config'

export default eslintConfig

CommonJS

// eslint.config.js

const eslintConfig = require('@krauters/eslint-config')

module.exports = eslintConfig
  1. Add these npm scripts to your package.json,
{
  ...
  "scripts": {
    "test": "npm run lint",
    "lint": "npx eslint src/**",
    "fix": "npm run lint -- --fix"
  }
}
  1. Update your README to show off your linting setup,
## Lint
This package uses [@krauters/eslint-config](https://github.com/krauters/eslint-config).

```zsh
# Check if your code follows the rules
npm run lint

# Fix what can be auto-fixed
npm run fix
```
  1. Now, let’s try it out.
npm run lint
npm run fix

Development

Testing Locally

Want to test this linting config locally between two repos? Easy.

  • Repo1 is the ESLint config repo.
  • Repo2 is a JS/TS project using Repo1.

Steps

  1. Clone both repos.
  2. Link 'em up. From the root of Repo1, run:
npm link
  1. Then in Repo2, do this:
npm link @krauters/eslint-config
  1. When you’re done testing, unlink it with,
npm unlink @krauters/eslint-config

Setting Up Environment Variables

To control the behavior of how this package gets it's tsconfig file, you can set the following environment variables:

  • ESLINT_DEBUG: Enables detailed debug logging. Set this to any truthy value, e.g., 1 or true.
  • ESLINT_TSCONFIG: Overrides the default target file being searched. Defaults to tsconfig.eslint.json.
  • ESLINT_START_DIR: Specifies the starting directory for the search. Defaults to the current working directory (process.cwd()).
  • ESLINT_TSCONFIG_FALLBACK: Sets a fallback file to use if the target file is not found. Defaults to tsconfig.json.

Debugging Tips

To troubleshoot your ESLint configuration, use the following commands:

# Print the full ESLint config for a specific file that you want to lint
npx eslint --print-config test/auth-service.test.ts | grep tsconfig

# Enable debug logging while running ESLint
ESLINT_DEBUG=true npx eslint .

Resources

Contributing

The goal of this project is to continually evolve and improve its core features, making it more efficient and easier to use. Development happens openly here on GitHub, and we’re thankful to the community for contributing bug fixes, enhancements, and fresh ideas. Whether you're fixing a small bug or suggesting a major improvement, your input is invaluable.

License

This project is licensed under the ISC License. Please see the LICENSE file for more details.

🥂 Thanks Contributors

Thanks for spending time on this project.