Skip to content

Latest commit

 

History

History
284 lines (258 loc) · 7.83 KB

README.md

File metadata and controls

284 lines (258 loc) · 7.83 KB

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