A pluggable JavaScript linter and code transformer with built-in support for JS, TS, JSX, Markdown, YAML, TOML, JSON, and more.
Putout is a pluggable JavaScript linter and code transformer that combines linting, formatting, and advanced code modifications. It solves the problem of maintaining clean codebases by automatically applying best-practice transformations across JavaScript, TypeScript, and other file formats. Unlike traditional linters, it can perform drastic changes like fixing reference errors and converting module systems.
JavaScript and TypeScript developers working on codebases that require consistent quality, automated refactoring, and migration assistance (e.g., CommonJS to ESM). Teams seeking an ESLint alternative with more aggressive auto-fixing capabilities.
Developers choose Putout for its powerful transformation engine, declarative plugin system, and ability to handle complex codemods simply. It uniquely combines linting, fixing, and multi-format support in one tool, offering more actionable fixes than ESLint while maintaining compatibility.
🐊 Pluggable and configurable JavaScript Linter, code transformer and formatter with superpowers 💪: built-in support of js, jsx, ts, markdown, yaml, toml, json and ignore. Write declarative codemods in a simplest possible way 😏
Plugins like remove-debugger can be written in just 5 lines of declarative code, making custom transformations easy to create and maintain.
Supports JavaScript, TypeScript, JSX, Markdown, YAML, TOML, JSON, and ignore files through built-in processors, enabling consistent linting across configurations.
Can use .eslintrc.json or eslint.config.js files, allowing seamless migration from ESLint and reducing setup friction for existing projects.
Performs complex transformations like converting CommonJS to ESM, fixing reference errors, and declaring variables, going beyond typical linting auto-fixes.
Applies drastic code modifications automatically, which could introduce bugs if not carefully reviewed, as cautioned in the README's advice to commit before running.
Requires managing plugins, rules, and processors, which can be complex and overwhelming for small projects or teams new to AST-based tools.
Has fewer community plugins compared to ESLint, limiting out-of-the-box functionality for specialized linting needs without custom development.
Putout is an open-source alternative to the following products:
Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more
Find and fix problems in your JavaScript code.
⚓ A collection of high-performance JavaScript tools.
Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.