vx-pm-pnpm
PNPM package manager support for the vx universal tool manager.
Status
🚧 Under Development - This crate is currently under development and not yet implemented.
Overview
vx-pm-pnpm will provide PNPM (Performant NPM) package manager support for vx, enabling fast, disk space efficient package management for JavaScript/Node.js projects through the vx interface.
Planned Features
- PNPM Package Manager: Fast, disk space efficient package management
- Symlink-based: Content-addressable storage with symlinks
- Workspace Support: PNPM workspaces and monorepo support
- Strict Mode: Strict dependency resolution
- Script Execution: Run package.json scripts through vx
- Cache Management: Global package cache with deduplication
- Lock File: pnpm-lock.yaml file management
Planned Commands
Package Management
# Install packages (planned)
# Update packages (planned)
Project Management
# Initialize projects (planned)
# Run scripts (planned)
# Information (planned)
Workspace Management
# Workspace commands (planned)
Store Management
# Store commands (planned)
Current Status
This crate is currently in the planning phase. JavaScript/Node.js package management is currently provided through the vx-pm-npm crate.
For immediate JavaScript development needs, please use:
vx-pm-npm- NPM package manager (available now)vx-tool-node- Node.js runtime with npm
Development Roadmap
- Phase 1: Basic PNPM package management
- Phase 2: Workspace and monorepo features
- Phase 3: Store management and optimization
- Phase 4: Advanced features (strict mode, filtering)
PNPM Advantages (Planned)
Disk Space Efficiency
- Content-addressable storage: Packages stored once globally
- Symlink structure: Projects link to global store
- Deduplication: Automatic deduplication of dependencies
Performance Benefits
- Faster installs: Parallel installation and linking
- Incremental installs: Only install changed dependencies
- Efficient updates: Minimal file operations
Strict Dependency Management
- Flat node_modules: No phantom dependencies
- Strict resolution: Only declared dependencies accessible
- Reproducible builds: Consistent dependency resolution
Feature Comparison
| Feature | NPM (Available) | PNPM (Planned) | Yarn (Planned) |
|---|---|---|---|
| Package Installation | ✅ | 🚧 | 🚧 |
| Disk Space Efficiency | ❌ | 🚧 | ❌ |
| Symlink Structure | ❌ | 🚧 | ❌ |
| Workspaces | ✅ | 🚧 | 🚧 |
| Strict Mode | ❌ | 🚧 | ❌ |
| Global Store | ❌ | 🚧 | ❌ |
Contributing
This crate is not yet implemented. If you're interested in contributing to PNPM support in vx, please:
- Check the main project issues
- Join the discussion about PNPM package manager support
- See the contributing guidelines
Alternative Solutions
While this crate is under development, consider these alternatives:
NPM (Available Now)
# Use NPM for JavaScript package management
System PNPM
# Use system PNPM with vx
Configuration (Planned)
Project Configuration (.vx.toml)
# Planned configuration
[]
= "latest"
[]
= "~/.pnpm-store"
= true
= true
PNPM Configuration (.npmrc)
# Planned PNPM configuration integration
store-dir=~/.pnpm-store
strict-peer-dependencies=true
auto-install-peers=true
shamefully-hoist=false
Workspace Configuration (pnpm-workspace.yaml)
# Planned workspace configuration
packages:
- 'packages/*'
- 'apps/*'
- '!**/test/**'
Architecture (Planned)
Store Structure
~/.pnpm-store/
├── v3/
│ └── files/
│ ├── 00/
│ ├── 01/
│ └── ...
└── tmp/
Project Structure
my-project/
├── node_modules/
│ ├── .pnpm/ # Real packages
│ ├── express/ # Symlink to .pnpm
│ └── ...
├── package.json
└── pnpm-lock.yaml
Performance Benefits (Planned)
Installation Speed
- Parallel processing: Concurrent package resolution and installation
- Incremental installs: Only process changed dependencies
- Link-based: Fast symlink creation vs file copying
Disk Usage
- Global deduplication: Single copy of each package version
- Content addressing: Efficient storage of package contents
- Shared cache: Packages shared across all projects
License
This project is licensed under the MIT License - see the LICENSE file for details.
Related Crates
vx-core- Core functionalityvx-cli- Command-line interfacevx-pm-npm- NPM package manager (available now)vx-pm-yarn- Yarn package manager (planned)vx-tool-node- Node.js tool