A fast, reliable package manager for Node.js, built with Rust. RNP provides npm-like functionality with improved performance and reliability.
rnp init— Initialize apackage.jsonfilernp init --yes— Initialize with default values (no prompts)rnp install <package>— Simulated install of a packagernp install <package> --no-package-lock— Install without reading/writing lockfilernp install <package> --ignore-scripts— Skip lifecycle scriptsrnp install -w <workspace> <package>— Add dependency to a workspace packagernp install --hoist <none|safe|aggressive> <package>— Control hoist strategyrnp install --verbose <package>— Detailed logsrnp install --quiet <package>— Minimal outputrnp uninstall <package...>— Remove package(s)rnp update [package...]— Update one, many, or all dependenciesrnp ci— Strict lockfile-only deterministic installrnp run <script> [args...]— Run package scriptsrnp audit— Run security audit against npm advisoriesrnp list— List installed packages (coming soon)~/.rnp/cache— Automatic tarball caching for faster installspackage-lock.json— Generated lockfile for deterministic installs- Progress bars and colorized output for install flow
- Workspace-aware installs (basic monorepo support)
git clone https://github.com/a-khushal/rnp.git
cd rnp
cargo build --release./target/release/rnp init
./target/release/rnp init -y
./target/release/rnp install <package-name>
./target/release/rnp i <package-name> <another-package-name>
./target/release/rnp install <package-name> --no-package-lock
./target/release/rnp install <package-name> --ignore-scripts
./target/release/rnp install -w <workspace-name> <package-name>
./target/release/rnp install --hoist aggressive <package-name>
./target/release/rnp install --verbose <package-name>
./target/release/rnp install --quiet <package-name>
./target/release/rnp uninstall <package-name>
./target/release/rnp update
./target/release/rnp update <package-name>
./target/release/rnp ci
./target/release/rnp ci -w <workspace-name>
./target/release/rnp run test
./target/release/rnp run build -- --watch
./target/release/rnp audit
./target/release/rnp listTo make rnp available anywhere in your terminal, add this to your shell configuration file (~/.bashrc, ~/.zshrc, or ~/.config/fish/config.fish):
For Bash/Zsh:
alias rnp='$HOME/<pwd>/rnp/target/release/rnp'For Fish:
alias rnp='$HOME/<pwd>/rnp/target/release/rnp'Then reload your shell or run:
source ~/.bashrc # or ~/.zshrcAfter setting up the alias, you can use rnp directly:
rnp init
rnp install <package-name>- Basic package installation
- Caching System
- TAR ball caching in
~/.rnp/cache - Cache invalidation logic
- Checksum verification
- TAR ball caching in
- Lockfile Support
-
package-lock.jsongeneration - Deterministic installs from lockfile
-
--no-package-lockflag
-
- Node Modules
- Nested
node_modulesstructure - Peer dependencies support
- Dependency hoisting
- Nested
- CLI Improvements
- Progress bars
- Colorized output
-
--verboseand--quietflags
- Dependency Resolution
- Peer dependencies
- Optional dependencies
- Workspaces/monorepo support
-
rnp uninstall- Remove packages -
rnp update- Update packages -
rnp run- Run package scripts -
rnp audit- Security audits
- Install Correctness & npm Parity
- Respect
enginesfield and warn/error for incompatible Node versions - Handle
osandcpuconstraints during install - Support lifecycle scripts (
preinstall,install,postinstall) with opt-out flag - Better semver/range compatibility for complex npm ranges
- Preserve/install package bin links into
node_modules/.bin
- Respect
- Lockfile & Reproducibility
- Add lockfile integrity field verification (
integrity, sha512) - Save dependency tree paths (closer to npm lockfile format)
- Add
rnp cifor strict lockfile-only, deterministic installs - Fail install when lockfile and manifest are out of sync (in CI mode)
- Add lockfile integrity field verification (
- Workspaces (Advanced)
- Workspace-aware install filtering (
-w/--workspace) - Hoist strategy config (
none,safe,aggressive) - Cross-workspace linking and script execution ordering
- Workspace-focused lockfile metadata
- Workspace-aware install filtering (
- Dependency Management UX
- Add
rnp addalias and-D/--save-dev,-O/--save-optional,--save-peer - Add
rnp removealias for uninstall parity - Add
rnp outdatedto compare installed vs latest versions - Add
rnp why <package>to explain dependency origin
- Add
- Security & Supply Chain
- Add
rnp audit fixwith safe/force modes - Verify tarball signatures where available
- Add allow/deny policy for registries and package scopes
- Add minimal SBOM export (
cyclonedx/spdx)
- Add
- CLI/Developer Experience
- Better error formatting with actionable hints
- JSON output mode for machine-readable logs (
--json) - Shell completion generation (bash/zsh/fish/powershell)
- Config file support (
.rnprc, project + global)
- Performance & Reliability
- Smarter parallel extraction scheduling by package size
- Retry/backoff and mirror fallback for registry fetches
- Offline mode (
--offline) using cache-only installs - Install benchmarks and regression performance tests
- Testing & Quality Gates
- Integration test suite with fixture projects
- Golden snapshot tests for lockfile generation
- Cross-platform filesystem behavior tests (linux/macOS/windows)
- GitHub Actions CI matrix with lint, build, and tests
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.