Roadmap
What works today and what is still in flight
snpm is under active development. Most day-to-day workflows are covered; the rough edges are ecosystem-specific compatibility, performance tuning on very large repos, and a handful of diagnostics polish items.
Shipped
Core CLI
- Full command surface:
install,add,remove,upgrade,outdated,list,run,exec,dlx,init,licenses,link,unlink,pack,publish,rebuild,patch,clean,audit,why,store,login,logout,config,node, plus a<script-name>fallback. - Global flags propagated into subcommands:
--frozen-lockfile,--no-frozen-lockfile,--prefer-frozen-lockfile,--verbose. - Multicall aliases:
spx,snpx,pnpx(→snpm dlx) andsnpr(→snpm run). - Shell completions:
bash,zsh,fish,powershell,elvish.
Resolution and install
- Lockfile-driven installs with
snpm-lock.yaml(schemav1). - Hot-path detection via
node_modules/.snpm-integrity(sub-100 ms warm installs). - Shared package store with
auto/hardlink/symlink/copylink backends. - Shared virtual-store entries keyed by version + dependency closure; project-local fallbacks for patched, script-allowed, directory-backed
file:, and resolver-walk-up-sensitive packages. - Configurable hoisting (
none,single-version,all). - Peer dependency resolution with optional strict mode.
Workspaces
- Discovery from
snpm-workspace.yaml,pnpm-workspace.yaml, andpackage.jsonworkspaces. -w <name>,-r/--recursive,--filter,--filter-prodacrossadd,remove,run,exec,upgrade,outdated,list,why,publish.- Graph-aware filters:
pkg...,...pkg,^pkg...,[git-ref], glob, path, exact name,!exclude. - Catalogs in
snpm-workspace.yamland standalonesnpm-catalog.yaml. - Overrides via
snpm-overrides.yaml,snpm.overrides, andpnpm.overrides.
Lockfile interop
- Imports from
pnpm-lock.yaml(including branch lockfiles likepnpm-lock.feature!name.yaml),bun.lock,yarn.lock,npm-shrinkwrap.json, andpackage-lock.jsonwhensnpm-lock.yamlis missing.
Security
- Install scripts blocked by default; allow-list via
SNPM_ALLOW_SCRIPTSor workspaceonlyBuiltDependencies/ignoredBuiltDependencies. SNPM_MIN_PACKAGE_AGE_DAYSzero-day protection.- Tarball auth scoped to the announcing registry origin.
auditwith--audit-level,--fix, SARIF output, CVE/GHSA exclusions, unfixable suppression.
Publishing
packwith--dry-run,--list,--json, and inspection findings.publishwith--tag,--access,--otp,--dry-run,--allow-risk, plus workspace fan-out.
Local development
link/unlinkfor global and project-local link flows.patch edit/commit/remove/list, compatible withpnpm.patched_dependencies.rebuildto apply script-policy changes to already-extracted packages.
Tooling
dlxwith--offlineand--prefer-offline.snpm node ...: built-in nvm-style version manager with.node-version/.nvmrc/engines.nodediscovery and shell init script.snpm-switchlauncher readspackageManagerfrompackage.jsonand pins per-project snpm versions.snpm cleaninteractive cache cleanup;snpm store status/path/prunefor store maintenance.
In progress
- Tighter performance on very large monorepos (5k+ projects, 100k+ resolved packages).
- Broader compatibility with unusual package layouts and lifecycle expectations.
- Improved diagnostics and migration messaging.
- More
compat-labcoverage of real-world JavaScript/TypeScript repositories.
Future considerations
- Side-effect caches for install scripts.
- Pluggable lifecycle hooks.
- Interactive
upgradeandoutdatedmodes. - First-class support for additional registries beyond npm/JSR.
The GitHub issues tracker is the most up-to-date source for in-flight work.