Repository navigation
Description
https://github.com/sxzz/verkit is a SemVer toolkit for modern ESM and TypeScript projects. It follows node-semver semantics while providing a functional, tree-shakeable API.
verkit offers several advantages:
- Complete SemVer version and range support
- Faster than node-semver across the operations covered by its benchmarks
- Between 1.13× and 2.26× faster in the current benchmark suite
- Pure ESM with zero runtime dependencies
- First-class TypeScript declarations—no need to install
@types/semver - Functional, tree-shakeable named exports
- Smaller bundles
- 25.4% smaller for full-package imports
- 59.7% smaller for common tree-shaken imports
- Immutable collection helpers, while parsed
SemVerandSemVerRangerecords remain mutable - A documented migration guide for renamed and reshaped node-semver APIs
node-semver does not appear to have an active ESM migration plan. ESM support was proposed as early as npm/node-semver#325, and the request in npm/node-semver#712 remains open. More recently, the dual-format ESM proposal in npm/node-semver#844 was closed, with a maintainer noting that moving npm packages to ESM is on their radar but is not currently being worked on.
The main concern is that verkit is still young, and it is not a completely drop-in replacement: it is ESM-only, some APIs have clearer names or different shapes, and it intentionally does not provide node-semver's CommonJS entry point, CLI, or NODE_DEBUG=semver output. Adoption should therefore focus on ESM projects whose actual node-semver usage is covered by verkit.
Progress
- tsdown
- Babel: refactor: replace
semverwithverkitbabel/babel#18145 - Nuxt: refactor(kit,nuxt): replace
semverwithverkitnuxt/nuxt#35713 - Nuxt CLI: refactor: migrate from
semvertoverkitnuxt/cli#1379 - Nuxt DevTools: refactor(devtools): replace semver with verkit nuxt/devtools#1027
- bumpp: feat!: drop node 20 support, replace semver with verkit antfu-collective/bumpp#124
- npmx: refactor: replace semver with verkit npmx-dev/npmx.dev#3061
- fast-npm-meta: refactor: replace semver with verkit antfu/fast-npm-meta#45
- node-modules-inspector: refactor: replace semver with verkit antfu/node-modules-inspector#180
- changelogithub: feat!: drop node < 22, migrate deps antfu-collective/changelogithub#81
- taze: refactor: replace semver-es and debug with verkit and obug antfu-collective/taze#287
- Slidev: refactor: replace semver with verkit slidevjs/slidev#2699
- jsonc-eslint-parser: refactor: replace semver with verkit ota-meshi/jsonc-eslint-parser#300
- Astro: Replace semver with verkit withastro/astro#17651
Activity
Norbiros commentedon Jul 22, 2026
@sxzz, since you’re already updating many libraries across the Nuxt ecosystem, could you also take a look at https://github.com/nuxt/cli?
sxzz commentedon Jul 22, 2026
Thanks for the suggestion. I’m not planning to migrate every project in the ecosystem myself. If you’d like
nuxt/clito adopt verkit, please open an issue or PR in that repository so its maintainers can evaluate it.ghostdevv commentedon Jul 22, 2026
How come you're shipping an
index.min.js? You could shrink the unpack size by ~18kbsxzz commentedon Jul 23, 2026
Thanks for the suggestion. Removed now.
MichaelDeBoey commentedon Jul 23, 2026
gameroman commentedon Jul 30, 2026
Would be great to convince
@typescript-eslint/typescript-estreeto switchsxzz commentedon Jul 30, 2026
They need to switch to pure ESM first typescript-eslint/typescript-eslint#11379