mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-03-27 09:45:53 +00:00
87 lines
No EOL
2 KiB
Markdown
87 lines
No EOL
2 KiB
Markdown
# Custom Node.js Build
|
|
|
|
This document describes how to build a minimal custom Node.js binary for VibeTunnel.
|
|
|
|
## Overview
|
|
|
|
The custom Node.js build reduces binary size from ~110MB to ~50-60MB by excluding:
|
|
- International support (ICU) - saves ~28MB
|
|
- npm/npx - saves ~5MB
|
|
- corepack
|
|
- dtrace/etw instrumentation
|
|
- Inspector protocol
|
|
- Other unused features
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
# Build for current Node.js version
|
|
node build-custom-node.js
|
|
|
|
# Build latest Node.js version
|
|
node build-custom-node.js --latest
|
|
|
|
# Build specific version
|
|
node build-custom-node.js --version=24.1.0
|
|
node build-custom-node.js --version=24.2.0
|
|
```
|
|
|
|
## Output Location
|
|
|
|
The custom Node.js will be built in:
|
|
```
|
|
.node-builds/node-vXX-minimal/out/Release/node
|
|
```
|
|
|
|
## Build Requirements
|
|
|
|
- Python 3 (for Node.js build system)
|
|
- C++ compiler (Xcode command line tools on macOS)
|
|
- make
|
|
- ~10-20 minutes build time
|
|
|
|
## Troubleshooting
|
|
|
|
### Incomplete Builds
|
|
|
|
If builds are incomplete (directories exist but no executable):
|
|
|
|
```bash
|
|
# Delete the incomplete build
|
|
rm -rf .node-builds/node-v24.1.0-minimal
|
|
|
|
# Rebuild
|
|
node build-custom-node.js --version=24.1.0
|
|
```
|
|
|
|
### Common Issues
|
|
|
|
- **Interrupted builds**: Delete the directory and rebuild
|
|
- **Missing executable**: Check `.node-builds/node-vXX-minimal/out/Release/node` exists
|
|
- **Build failures**: Ensure Xcode command line tools are installed (macOS)
|
|
- **Build time**: The build process takes 10-20 minutes - let it complete fully
|
|
|
|
### Verification
|
|
|
|
After building, verify the executable exists:
|
|
```bash
|
|
ls -la .node-builds/node-v24.1.0-minimal/out/Release/node
|
|
```
|
|
|
|
## Using with build-native.js
|
|
|
|
The custom Node.js is automatically detected by `build-native.js`:
|
|
|
|
```bash
|
|
# Auto-detect latest custom build
|
|
node build-native.js --custom-node
|
|
|
|
# Specify custom Node path
|
|
node build-native.js --custom-node=/path/to/custom/node
|
|
```
|
|
|
|
## Size Comparison
|
|
|
|
- Standard Node.js: ~110MB
|
|
- Custom Node.js: ~50-60MB
|
|
- Final executable with custom Node: ~105MB (vs ~155MB with standard Node) |