Skip to content

regseb/metalint

Repository files navigation

Metalint

npm build coverage semver

Un linter pour les gouverner tous.

Description

Metalint est un outil pour analyser tous les fichiers de votre projet. L'analyse est déléguée à des linters (outils d'analyse statique de code source) :

Langage / Technologie Linters
CoffeeScript CoffeeLint
CSS CSSLint, DoIUse, Prettier, PurgeCSS, Stylelint
HTML HTMLHint, htmllint, markuplint, Prettier
JavaScript ESLint, JSHint, JavaScript Standard Style, Prettier
JSON Ajv, @mapbox/JSON Lint lines-primitives, @prantlf/JSON Lint, JSON Lint (mod), Prettier
Less Prettier, Stylelint
Markdown MarkdownLint
package.json Depcheck, npm-check-updates, npm-package-json-lint, publint, Sort Package.json
SCSS Prettier, Stylelint
SugarSS Stylelint
SVG Prettier, SVGLint
WebExtension Add-ons Linter
YAML YAML Lint, Prettier

Installation

Vous pouvez installer Metalint en utilisant npm :

npm install --save-dev --save-exact metalint

Configuration

Tous les fichiers de configuration sont à regrouper dans le répertoire .metalint/ qui doit être placé à la racine du projet. Le fichier metalint.config.js export un objet JSON indiquant les linters à utiliser pour chaque fichier. Les autres fichiers contiennent les options spécifiques pour les linters.

Exemple

Dans cet exemple des fichiers de configuration, Metalint analyse les fichiers JavaScript (non-minifiés), HTML et CSS ; avec respectivement les linters ESLint, HTMLHint et Stylelint.

// .metalint/metalint.config.js
export default {
  patterns: ["**", "!/.git/**", "!/node_modules/**"],
  checkers: [
    {
      patterns: ["*.js", "!*.min.js"],
      linters: "eslint",
    },
    {
      patterns: "*.html",
      linters: "htmlhint",
    },
    {
      patterns: "*.css",
      linters: "stylelint",
    },
  ],
};
// .metalint/eslint.config.js
export default {
  rules: {
    quotes: ["error", "double"],
    semi: ["error", "always"],
  },
};
// .metalint/htmlhint.config.js
export default {
  "attr-value-not-empty": false,
};
// .metalint/stylelint.config.js
export default {
  rules: {
    "color-no-invalid-hex": true,
  },
};

Intégration

npm

Après avoir installé Metalint et les linters dans votre projet npm, vous pouvez ajouter le script suivant dans votre package.json :

{
  "scripts": {
    "lint": "metalint"
  }
}

Metalint est maintenant utilisable avec la commande : npm run lint

GitHub Actions

Pour lancer Metalint dans vos GitHub Actions, vous pouvez utiliser le formateur github pour rapporter les problèmes dans les pull requests.

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-node@v4
      - uses: actions/checkout@v4
        with:
          persist-credentials: false
      - name: Install dependencies
        run: npm ci
      - name: Lint files
        run: npm run lint -- --formatter github