eslint_d
raw JSON →eslint_d is a drop-in replacement for ESLint that runs linting in a persistent background daemon, drastically reducing startup latency (e.g., ~300ms to ~100ms per run on modern hardware). Version 15.0.2 requires Node.js >=22 and supports ESLint v4 through v10. It automatically starts, stops, and restarts the server, binds to parent/editor processes, and falls back to a bundled ESLint if a local one is missing. Key differentiators include environment variables for fine-tuning behavior, support for monorepos via `ESLINT_D_ROOT`, and a `--fix-to-stdout` option for editor integration. Unlike editor-built-in caches, it provides speed benefits to Vim, Neovim, Emacs, and Sublime Text, while Atom, VSCode, and WebStorm gain little due to their own caching.
Common errors
error Failed to start daemon: EADDRINUSE ↓
error eslint_d: command not found ↓
error Error: No matching ESLint version found. ESLint v10.0.0 is not supported. ↓
Warnings
breaking eslint_d v15 requires Node.js >=22. Older Node versions will not work. ↓
gotcha Editors like Atom, VSCode, and WebStorm already cache ESLint; using eslint_d may not improve performance and can cause conflicts. ↓
gotcha If ESLINT_D_PPID is not set and ESLINT_D_IDLE is 0, the daemon may never exit automatically, consuming resources. ↓
deprecated CommonJS require() patterns for eslint_d are deprecated; it is ESM-only since v15. ↓
Install
npm install eslint_d yarn add eslint_d pnpm add eslint_d Imports
- eslint_d CLI wrong
eslint_d # must be installed globally or via npxcorrectnpx eslint_d --version
Quickstart
npm install -g eslint_d
# Lint a file
eslint_d file.js
# Start daemon explicitly
eslint_d start
# Status
eslint_d status
# Fix to stdout (requires --stdin)
echo 'let x = 1' | eslint_d --stdin --fix-to-stdout
# Stop daemon
eslint_d stop