snpmv2026.1.7

Introduction

Welcome to snpm - the Speedy Node Package Manager

snpm is a fast, simple, and deterministic package manager written in Rust. It's designed to be a drop-in replacement for npm, yarn, and pnpm.

Status: snpm is production-ready for most workflows. Fast, secure, and feature-complete for day-to-day package management. Publishing features coming soon.

Why snpm?

Built with a strict "no cleverness" rule, snpm focuses on making the existing npm workflow faster, simpler, and easier to maintain.

Core Features

  • Familiar Commands - snpm install, snpm add, snpm run work exactly like npm
  • Global Store - Download packages once, reuse them across all projects
  • Parallel Operations - Network and disk operations run in parallel for speed
  • Workspace Support - First-class monorepo support with snpm-workspace.yaml
  • Catalog Protocol - Define dependency versions once in snpm-catalog.yaml
  • Clean Lockfile - Simple, readable snpm-lock.yaml format
  • Minimum Version Age - Protect against zero-day malicious packages
  • Install Script Security - All install scripts blocked by default, explicit whitelisting required
  • Flexible Hoisting - Choose from none, single-version, or all hoisting modes
  • Link Backend Options - Auto, hardlink, symlink, or copy strategies
  • Overrides Support - Force specific versions via snpm-overrides.yaml or package.json
  • Verbose Logging - Detailed debugging output with --verbose flag

Quick Start

# Install snpm
npm install -g snpm

# Use it like npm
snpm install
snpm add react
snpm run build

How It Works

Global Store - Packages are downloaded once and stored in platform-specific directories (e.g., ~/Library/Caches/snpm on macOS) and linked into your projects. This saves disk space and speeds up subsequent installs.

Parallelism - Multiple packages download simultaneously, and disk operations are optimized for speed.

Workspaces - Detects snpm-workspace.yaml or pnpm-workspace.yaml and efficiently manages dependencies across multiple packages in a monorepo.

Catalog Protocol - Define versions in snpm-catalog.yaml and reference them with catalog: in your package.json to eliminate version drift.

Security - Install scripts are blocked by default. Packages must be explicitly whitelisted via SNPM_ALLOW_SCRIPTS to run install scripts.

On this page