@fox-uni/fob
v0.2.4
Published
High-performance JavaScript bundler powered by Rust using NAPI-RS.
Downloads
87
Readme
@fox-uni/fob
High-performance JavaScript bundler powered by Rust using NAPI-RS.
Installation
npm install @fox-uni/fob
# or
pnpm add @fox-uni/fob
# or
yarn add @fox-uni/fobThe package will automatically install the correct native binary for your platform.
Supported Platforms
- macOS: x64, ARM64 (Apple Silicon)
- Linux: x64 (glibc & musl), ARM64 (glibc & musl)
- Windows: x64
Usage
Basic Bundle
import { Fob, OutputFormat, SourceMapMode } from '@fox-uni/fob';
const bundler = new Fob({
entries: ['./src/index.js'],
outputDir: './dist',
format: OutputFormat.Esm,
sourcemap: SourceMapMode.External,
cwd: process.cwd(),
});
const result = await bundler.bundle();
console.log(`Built ${result.chunks.length} chunks in ${result.stats.durationMs}ms`);Quick Single-File Bundle
import { bundleSingle, OutputFormat } from '@fox-uni/fob';
const result = await bundleSingle('./src/index.js', './dist', OutputFormat.Esm);API
Fob Class
Constructor
new Fob(config: BundleConfig)BundleConfig:
entries: string[]- Entry points to bundleoutputDir?: string- Output directory (default:"dist")format?: OutputFormat- Output format:Esm,Cjs, orIife(default:Esm)sourcemap?: SourceMapMode- Source map mode:External,Inline,Hidden, orDisabledcwd?: string- Working directory for resolution (default:process.cwd())
Methods
bundle(): Promise<BundleResult>
Bundles the configured entries and returns detailed bundle information.
Returns: BundleResult
chunks: ChunkInfo[]- Generated chunksmanifest: ManifestInfo- Bundle manifeststats: BuildStatsInfo- Build statisticsassets: AssetInfo[]- Static assets
bundleSingle Function
Quick helper to bundle a single entry:
bundleSingle(
entry: string,
outputDir: string,
format?: OutputFormat
): Promise<BundleResult>version Function
Returns the bundler version:
version(): stringOutput Formats
OutputFormat.Esm- ECMAScript Module format (default)OutputFormat.Cjs- CommonJS formatOutputFormat.Iife- Immediately Invoked Function Expression format
Source Map Modes
SourceMapMode.External- Generate external.mapfile (default)SourceMapMode.Inline- Embed source map in outputSourceMapMode.Hidden- Generate source map but don't link from outputSourceMapMode.Disabled- No source map generation
Features
- Zero-copy Data Transfer: Native performance with minimal overhead
- Rich Bundle Information: Detailed chunk, module, and statistics data
- Type-safe: Full TypeScript definitions included
- Cross-platform: Pre-built binaries for all major platforms
- Production-ready: Battle-tested error handling and security
Error Handling
Errors are returned as structured JSON for easy debugging:
try {
await bundler.bundle();
} catch (error) {
console.error(JSON.parse(error.message));
// {
// type: "MissingExport",
// exportName: "Component",
// moduleId: "./src/component.js",
// ...
// }
}Requirements
- Node.js >= 18.0.0
License
MIT
Contributing
See GitHub repository for contribution guidelines.
