Un linter pour les gouverner tous.
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 |
Vous pouvez installer Metalint en utilisant npm :
npm install --save-dev --save-exact metalint
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.
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,
},
};
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
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