npm package: @idirdev/commitlint-quick
Description: Fast, zero-config conventional commit message linter with no external dependencies.
Author: idirdev
Latest version: 2.0.0

# commitlint-quick

> **[EN]** Fast conventional-commit linter for the CLI and CI pipelines — validate commit messages against standard rules with zero config.
> **[FR]** Linter de commits conventionnels rapide pour le CLI et les pipelines CI — validez les messages de commit selon les règles standard sans configuration.

---

## Features / Fonctionnalités

**[EN]**
- Validates commit messages against the Conventional Commits specification
- Lint a message directly with `-m` or read the last N commits from git history
- Outputs PASS / FAIL per commit with per-rule error and warning details
- JSON output mode for machine-readable CI integration
- Custom config file support to extend or override default rules
- Exits with code 1 when errors exist (CI-friendly)
- Works in any git repository, no extra setup required

**[FR]**
- Valide les messages de commit selon la spécification Conventional Commits
- Lint un message directement avec `-m` ou lit les N derniers commits depuis l'historique git
- Affiche PASS / FAIL par commit avec détails des erreurs et avertissements par règle
- Mode de sortie JSON pour une intégration CI lisible par machine
- Support de fichier de configuration personnalisé pour étendre ou remplacer les règles par défaut
- Quitte avec le code 1 en cas d'erreurs (compatible CI)
- Fonctionne dans tout dépôt git, aucune configuration supplémentaire requise

---

## Installation

```bash
npm install -g @idirdev/commitlint-quick
```

---

## CLI Usage / Utilisation CLI

```bash
# Lint a message directly / Linter un message directement
commitlint-quick -m "feat(auth): add OAuth2 support"
commitlint-quick -m "wip stuff"

# Lint the last commit / Linter le dernier commit
commitlint-quick

# Lint the last 5 commits / Linter les 5 derniers commits
commitlint-quick --last 5

# JSON output for CI / Sortie JSON pour le CI
commitlint-quick --last 3 --format json

# Use a custom config / Utiliser une configuration personnalisée
commitlint-quick -m "feat: new thing" --config ./commitlint.config.js
```

### Example Output / Exemple de sortie

```
  PASS feat(auth): add OAuth2 support

  FAIL wip stuff
    error: type must be one of: feat, fix, docs, style, refactor, test, chore
    error: subject must not be empty

  PASS fix(api): correct 401 response code
    warn: subject should be in imperative mood

2 passed, 1 failed
```

---

## API (Programmatic) / API (Programmation)

```js
const { lintCommit, lintFromGit, RULES } = require('@idirdev/commitlint-quick');

// Lint a single message / Valider un seul message
const result = lintCommit('feat(ui): add dark mode');
// {
//   message: 'feat(ui): add dark mode',
//   valid: true,
//   errors: [],
//   warnings: []
// }

const bad = lintCommit('wip: whatever');
// { valid: false, errors: ['type "wip" is not allowed'], warnings: [] }

// Lint last 3 commits from git / Valider les 3 derniers commits git
const results = lintFromGit(3);
results.forEach(r => {
  console.log(r.valid ? 'PASS' : 'FAIL', r.message.split('\n')[0]);
  r.errors.forEach(e => console.log('  error:', e));
});

// Inspect default rules / Inspecter les règles par défaut
console.log(RULES);
```

---

## License

MIT — idirdev