Linter library choice

Hello all,

We need to have a linter tp keep our codebase clean, consistent, and close to the best practices is

Critria

  • developed by a community
  • good editor support (at least VSCode and Jetbrain’s IDEs)
  • extensible, to be able to support additional syntax on top of the ones we already use (javascript, typescript, vue…)

Candidates

Choice Matrix

Library Analysis Governance Github link License Editor Support Modular/Extensible
eslint accept standard for Vue 3 + supported by a community Community (part of https://openjsf.org/) GitHub - eslint/eslint: Find and fix problems in your JavaScript code. MIT accept yes, see Integrations - ESLint - Pluggable JavaScript Linter accept yes, see Ways to Extend ESLint - ESLint - Pluggable JavaScript Linter
quick-lint-js cancel no IDE support GitHub - quick-lint/quick-lint-js: quick-lint-js finds bugs in JavaScript programs GPL 3.0 error no support for Jetbrains IDEs cancel no
standardjs cancel not extensible GitHub - standard/standard: 🌟 JavaScript Style Guide, with linter & automatic code fixer MIT accept yes, see GitHub - standard/standard: 🌟 JavaScript Style Guide, with linter & automatic code fixer cancel no
putout cancel one main contributor, not popular enough
Build on top of eslint and babel, take a more radical stance on fixing and allow itself to apply fix than can change the semantics. error 1 main contributor GitHub - coderaiser/putout: 🐊 Pluggable and configurable JavaScript Linter, code transformer and formatter, drop-in ESLint superpower replacement 💪 with built-in support for js, jsx, typescript, markdown, yaml and json. Write declarative codemods in a simplest possible way 😏 MIT accept yes
jshint cancel not extensible https://github.com/jshint/jshint MIT cancel no accept yes
biome cancel not extensible, no IDE support GitHub - biomejs/biome: A toolchain for web projects, aimed to provide functionalities to maintain them. Biome offers formatter and linter, usable via CLI and LSP. MIT cancel no support for Jetbrains IDEs cancel not

Conclusion

I suggest to use eslint are our linter. This is the default linter for Vue 3.

+1 for eslint