Quick Start
Build a single executable for your current platform:dist/ that users can run without installing Node.js or Bun.
Build Configuration
Configure builds inbunli.config.ts:
packages/core/src/config.ts:64-78
Compilation Targets
Compile for multiple platforms:darwin-arm64- macOS Apple Silicondarwin-x64- macOS Intellinux-arm64- Linux ARM64linux-x64- Linux x64windows-x64- Windows x64
packages/cli/src/commands/build.ts:145-153
Build Process
Here’s what happens during a build:
Source:
packages/cli/src/commands/build.ts:137-230
Build Command Options
packages/cli/src/commands/build.ts:28-68
Cross-Platform Builds
Build for all platforms at once:packages/cli/src/commands/build.ts:190-196
Non-Compiled Builds
Build without compilation for faster iteration:packages/cli/src/commands/build.ts:197-230
Build Implementation
Here’s how Bunli builds executables:packages/cli/src/commands/build.ts:76-240
External Dependencies
Mark dependencies as external to exclude from bundle:packages/cli/src/commands/build.ts:179-182, packages/core/src/config.ts:71
Compression
Compress builds for distribution:packages/cli/src/commands/build.ts:190-196
Distribution
Distribute your binaries:1. Direct Download
2. Install Script
3. npm Distribution
Publish binaries via npm:packages/core/src/config.ts:116-121
Watch Mode
Rebuild automatically on changes:packages/cli/src/commands/build.ts:64-67
Bytecode Compilation
Experimental bytecode compilation for smaller binaries:packages/cli/src/commands/build.ts:48-51
Source Maps
Generate source maps for debugging:packages/core/src/config.ts:72
Testing Builds
Test your compiled binary:Minification
Minify output for smaller binaries:packages/cli/src/commands/build.ts:40-43, packages/core/src/config.ts:70
CI/CD Integration
Build binaries in GitHub Actions:Troubleshooting
Build fails with 'command not found'
Build fails with 'command not found'
Ensure
bunli is installed globally or use bun run bunli build. Check that your entry file exists.Binary is very large
Binary is very large
Enable minification with
--minify and consider marking large dependencies as external.Import errors in compiled binary
Import errors in compiled binary
Check that all imports use
.js extensions. Bun requires explicit extensions for ESM.Platform-specific build issues
Platform-specific build issues
Some native modules may not compile for all platforms. Mark them as external or use fallbacks.
Best Practices
Test on target platforms
Test on target platforms
Always test binaries on actual target platforms before releasing.
Use compression for distribution
Use compression for distribution
Enable
compress: true to reduce download sizes:Keep binaries small
Keep binaries small
- Enable minification
- Mark large dependencies as external
- Avoid bundling unnecessary files
Version your releases
Version your releases
Tag releases in git and include version in binary names:
Next Steps
Type Generation
Automatic types for compiled CLIs
Release Process
Publish your binaries to npm and GitHub
Configuration
Advanced build configuration options
Defining Commands
Create commands for your compiled CLI