A blazingly fast replacement for npm install with deterministic caching
npm install -g @flash-install/cli
# Install dependencies
flash-install install
# Create a snapshot for faster future installs
flash-install snapshot
# Restore from a snapshot (ultra-fast)
flash-install restore
# Clean up
flash-install clean
- β‘ 30-50% faster than standard npm install
- π Deterministic caching for consistent builds
- π¦ Snapshot support for instant dependency restoration
- βοΈ Cloud caching for team sharing
- π Multiple package managers support (npm, yarn, pnpm, bun)
- ποΈ Monorepo support with workspace detection
- π Fallback to npm if any issues occur
Command | Description |
---|---|
flash-install |
Install dependencies (default) |
flash-install install |
Install dependencies |
flash-install snapshot |
Create a snapshot of node_modules |
flash-install restore |
Restore node_modules from a snapshot |
flash-install clean |
Remove node_modules and snapshot |
flash-install clean-modules |
Remove only node_modules (preserves snapshot) |
flash-install clean-snapshot |
Remove only snapshot (preserves node_modules) |
flash-install sync |
Synchronize dependencies with lockfile |
# Use offline mode
flash-install --offline
# Specify package manager
flash-install --package-manager yarn
# Skip dev dependencies
flash-install --no-dev
# Enable workspace support for monorepos
flash-install -w
Scenario | npm install | flash-install | Speedup |
---|---|---|---|
First install (small project) | 30-60s | 10-15s | 3-4x |
First install (large project) | 3-5min | 1-2min | 2-3x |
Subsequent install (from cache) | 30-60s | 5-10s | 6-10x |
Subsequent install (from snapshot) | 30-60s | 1-3s | 20-30x |
CI/CD environment | 1-3min | 5-15s | 10-20x |
Share caches across your team or CI/CD environments:
flash-install --cloud-cache --cloud-provider=s3 --cloud-bucket=your-bucket-name
Efficiently manage monorepo dependencies:
flash-install -w
Work without an internet connection:
# Create a snapshot while online
flash-install snapshot
# Later, restore dependencies while offline
flash-install restore --offline
# Use with Yarn
flash-install --package-manager yarn
# Use with PNPM
flash-install --package-manager pnpm
# Use with Bun
flash-install --package-manager bun
Here are some of the most useful options you can use with flash-install:
--offline
: Use offline mode (requires cache or snapshot)--no-cache
: Disable cache usage--concurrency <number>
: Number of concurrent installations--package-manager <manager>
: Package manager to use (npm, yarn, pnpm, bun)--no-dev
: Skip dev dependencies--verbose
: Enable verbose logging--quiet
: Suppress all output except errors
--workspace
or-w
: Enable workspace support for monorepos--workspace-filter <packages...>
: Filter specific workspace packages
--cloud-cache
: Enable cloud cache integration--cloud-provider <provider>
: Cloud provider type (s3, azure, gcp)--cloud-bucket <name>
: Cloud provider bucket name--cloud-region <region>
: Cloud provider region
For a complete list of all available options, run:
flash-install --help
Add Flash Install to your GitHub Actions workflow:
steps:
- uses: actions/checkout@v3
- name: Install dependencies with Flash Install
run: |
npm install -g @flash-install/cli
flash-install install --concurrency 8 --quiet
# Or install and create snapshot for future runs
- name: Create flash-install snapshot
run: flash-install snapshot
continue-on-error: true
# Future workflows can restore ultra-fast from snapshot
- name: Restore ultra-fast from snapshot
run: flash-install restore || npm ci
# Optional GitHub Action (when published):
# - uses: flash-install-cli/flash-install-action@v1
# with:
# command: 'install'
# concurrency: '8'
Note: The native GitHub Action will be available when
flash-install-cli/flash-install-action
is published.
- Dependency Resolution: Parses lockfiles to determine exact dependencies
- Workspace Detection: Identifies workspace packages in monorepos (when enabled)
- Cache Check: Checks if dependencies are in the global cache
- Snapshot Check: Checks if a valid
.flashpack
snapshot exists - Installation: If no cache or snapshot is available, installs dependencies using the package manager
- Caching: Adds newly installed packages to the cache with optional compression
- Snapshotting: Creates a
.flashpack
snapshot with fingerprinting for future use
For more detailed documentation, see the docs directory:
- Performance Optimizations
- Monorepo Support
- Offline Mode
- Dependency Analysis
- Cloud Cache
- Enhanced Plugin System
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository at https://github.com/flash-install-cli/flash-install
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
MIT