| Crates.io | version-lsp |
| lib.rs | version-lsp |
| version | 0.4.0 |
| created_at | 2026-01-18 09:26:34.329191+00 |
| updated_at | 2026-01-18 09:26:34.329191+00 |
| description | A Language Server Protocol implementation for package version management |
| homepage | https://github.com/skanehira/version-lsp |
| repository | https://github.com/skanehira/version-lsp |
| max_upload_size | |
| id | 2052115 |
| size | 609,716 |
A Language Server Protocol (LSP) implementation that provides version checking diagnostics for package dependency files.
![]() |
![]() |
![]() |
![]() |
^1.0.0, ~1.0.0, >=1.0.0)| File | Registry |
|---|---|
package.json |
npm |
pnpm-workspace.yaml |
npm |
Cargo.toml |
crates.io |
go.mod |
Go Proxy |
pyproject.toml |
PyPI |
.github/workflows/*.yaml/.github/actions/*/*.yaml |
GitHub Releases |
deno.json / deno.jsonc |
JSR |
Supports pnpm catalogs defined in pnpm-workspace.yaml:
# Single catalog
catalog:
react: ^18.2.0
lodash: ^4.17.21
# Named catalogs
catalogs:
react17:
react: ^17.0.2
react18:
react: ^18.2.0
Download the latest binary from GitHub Releases.
cargo install --git https://github.com/skanehira/version-lsp
If you have Nix with flakes enabled:
# Enter development shell with Rust toolchain
nix develop
# Build the package
nix build
# Run directly from flake
nix run github:skanehira/version-lsp
Available in Neovim >= 0.11
vim.lsp.config('version_lsp', {
cmd = { 'version-lsp' },
filetypes = { 'json', 'jsonc', 'toml', 'gomod', 'yaml' },
root_markers = { '.git' },
settings = {
["version-lsp"] = {
-- See 'Configuration Options' section below for details
},
},
})
vim.lsp.enable('version_lsp')
local lspconfig = require('lspconfig')
local configs = require('lspconfig.configs')
if not configs.version_lsp then
configs.version_lsp = {
default_config = {
cmd = { 'version-lsp' },
filetypes = { 'json', 'jsonc', 'toml', 'gomod', 'yaml' },
root_dir = function(fname)
return lspconfig.util.find_git_ancestor(fname)
end,
settings = {},
},
}
end
lspconfig.version_lsp.setup({
settings = {
["version-lsp"] = {
cache = {
refreshInterval = 86400000, -- 24 hours (milliseconds)
},
registries = {
npm = { enabled = true },
crates = { enabled = true },
goProxy = { enabled = true },
pypi = { enabled = true },
github = { enabled = true },
pnpmCatalog = { enabled = true },
jsr = { enabled = true },
},
ignorePrerelease = true, -- Ignore prerelease versions (default: true)
},
},
})
| Option | Type | Default | Description |
|---|---|---|---|
cache.refreshInterval |
number | 86400000 |
Cache refresh interval in milliseconds (default: 24 hours) |
registries.npm.enabled |
boolean | true |
Enable npm registry checks |
registries.crates.enabled |
boolean | true |
Enable crates.io registry checks |
registries.goProxy.enabled |
boolean | true |
Enable Go Proxy registry checks |
registries.pypi.enabled |
boolean | true |
Enable PyPI registry checks |
registries.github.enabled |
boolean | true |
Enable GitHub Releases checks |
registries.pnpmCatalog.enabled |
boolean | true |
Enable pnpm catalog checks |
registries.jsr.enabled |
boolean | true |
Enable JSR registry checks |
ignorePrerelease |
boolean | true |
Ignore prerelease versions (alpha, beta, rc, etc.) |
version-lsp stores its cache database at:
$XDG_DATA_HOME/version-lsp/versions.db or ~/.local/share/version-lsp/versions.db./version-lsp/versions.dbMIT