mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
## Summary Implements `--cpu` and `--os` flags for `bun install` to filter optional dependencies based on target architecture and operating system. This allows developers to control which platform-specific optional dependencies are installed. ## What Changed ### Core Implementation - Added `--cpu` and `--os` flags to `bun install` command that accept multiple values - Multiple values combine with bitwise OR (e.g., `--cpu x64 --cpu arm64` matches packages for either architecture) - Updated `isDisabled` methods throughout the codebase to accept custom CPU/OS targets - Removed deprecated `isMatch` methods in favor of `isMatchWithTarget` for consistency ### Files Modified - `src/install/npm.zig` - Removed `isMatch` methods, standardized on `isMatchWithTarget` - `src/install/PackageManager/CommandLineArguments.zig` - Parse and validate multiple flag values - `src/install/PackageManager/PackageManagerOptions.zig` - Pass CPU/OS options through - `src/install/lockfile/Package.zig` & `Package/Meta.zig` - Updated `isDisabled` signatures - `src/install/lockfile/Tree.zig` & `lockfile.zig` - Updated call sites ## Usage Examples ```bash # Install only x64 dependencies bun install --cpu x64 # Install dependencies for both x64 and arm64 bun install --cpu x64 --cpu arm64 # Install Linux-specific dependencies bun install --os linux # Install for multiple platforms bun install --cpu x64 --cpu arm64 --os linux --os darwin ``` ## Test Plan ✅ All 10 tests pass in `test/cli/install/bun-install-cpu-os.test.ts`: - CPU architecture filtering - OS filtering - Combined CPU and OS filtering - Multiple CPU architectures support - Multiple operating systems support - Multiple CPU and OS combinations - Error handling for invalid values - Negated CPU/OS support (`!arm64`, `!linux`) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
216 B
216 B