# package-json-lsp
Native Rust language server for package-manager catalog references in `package.json`.
It supports pnpm, Yarn, and Bun catalog metadata and provides:
- inlay hints for resolved `catalog:` versions
- hover information for catalog and dependency versions
- go-to-definition for catalog and `workspace:` references
- code lenses, diagnostics, and code actions for pnpm outdated packages
## Install
From crates.io:
```bash
cargo install package-json-lsp
```
With prebuilt binaries via `cargo-binstall`:
```bash
cargo binstall package-json-lsp
```
From this repository:
```bash
cargo install --path .
```
## Usage
Start the language server over stdio:
```bash
package-json-lsp
```
Neovim example:
```lua
vim.lsp.config["package_json_ls"] = {
cmd = { "package-json-lsp" },
filetypes = { "json", "yaml" },
root_markers = { { "pnpm-workspace.yaml" }, ".git" },
}
vim.lsp.enable("package_json_ls")
```
## CLI
```bash
package-json-lsp --version
package-json-lsp -v
package-json-lsp rage
```
## Development
```bash
cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo test
```