{"id":19676,"library":"eslint-lsp","title":"ESLint LSP","description":"eslint-lsp is a language server that wraps ESLint to provide linting diagnostics via the Language Server Protocol (LSP). The current stable version is 0.1.2, with an infrequent release cadence. It is a minimal implementation, still lacking many features (e.g., code actions) and is primarily intended as a proof-of-concept. Compared to alternatives like vscode-eslint or eslint-language-server, it is barebones and community-maintained. It works with editors like Emacs (lsp-mode, eglot) by spawning the server with --stdio.","status":"active","version":"0.1.2","language":"javascript","source_language":"en","source_url":"https://github.com/danielpza/eslint-lsp","tags":["javascript","lsp","language-server","eslint"],"install":[{"cmd":"npm install eslint-lsp","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-lsp","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-lsp","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"ESLint is required as peer dependency to perform actual linting. The server shell out or import eslint.","package":"eslint","optional":false}],"imports":[{"note":"This package is a CLI tool, not a library. There is no exported API to import. Use it as an executable.","wrong":"","symbol":"eslint-lsp","correct":"not importable as library; used as CLI via 'eslint-lsp --stdio'"}],"quickstart":{"code":"npm install -g eslint-lsp eslint\n# create a basic .eslintrc.json\ncat > .eslintrc.json <<'EOF'\n{\n  \"extends\": [\"eslint:recommended\"],\n  \"env\": { \"es6\": true, \"node\": true }\n}\nEOF\n# run the language server\nprintf 'Content-Length: 56\\r\\n\\r\\n{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{}}' | eslint-lsp --stdio","lang":"typescript","description":"Install globally, create a minimal ESLint config, and test the LSP with a raw LSP initialize message via stdin."},"warnings":[{"fix":"Consider using eslint-language-server or vscode-eslint for a more complete solution.","message":"Version 0.1.x is a work-in-progress; many LSP features (e.g., code actions, formatting) are missing or broken.","severity":"breaking","affected_versions":">=0.0.0"},{"fix":"Use JSON-formatted .eslintrc (e.g., .eslintrc.json) to ensure config is parsed.","message":"The server does not support all ESLint config formats (e.g., .eslintrc.js may not be loaded correctly).","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"None yet; limit workspace size or use alternative server.","message":"No caching mechanism; every file open triggers a fresh lint, slowing down large projects.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use full npm scope @danielpza/eslint-lsp if ambiguous; but current npm package is eslint-lsp.","message":"Package name is not unique (conflicts with eslint-lsp on Open VSX); may be renamed/clarified in future.","severity":"deprecated","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Install eslint globally alongside eslint-lsp: npm install -g eslint-lsp eslint","cause":"eslint is not installed or not in node_modules of the global install.","error":"Error: Cannot find module 'eslint'"},{"fix":"Prefix JSON message with 'Content-Length: <length>\\r\\n\\r\\n' where <length> is the byte length of the JSON string.","cause":"Sending data without proper LSP framing; need Content-Length header.","error":"Content-Length header missing"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}