esbuild: JavaScript/CSS Bundler (Linux RISC-V 64-bit)

0.15.18 · active · verified Tue Apr 21

esbuild is a modern, extremely fast JavaScript and CSS bundler and minifier written in Go, not JavaScript. It aims to significantly improve build tool performance by leveraging parallelism and low-level optimizations, often achieving speeds 10-100 times faster than other bundlers like Webpack or Rollup. Key features include built-in support for ES6 and CommonJS modules, TypeScript, JSX, tree-shaking, source maps, and minification. It provides a straightforward API for both CLI and programmatic use in JavaScript/TypeScript and Go. The main `esbuild` package dynamically installs platform-specific binaries; `esbuild-linux-riscv64` is one such binary for Linux RISC-V 64-bit architectures. The latest stable version of the core `esbuild` is 0.28.0 (as of April 2026), with frequent patch and minor releases addressing bugs and adding features. It is widely adopted, integrated into tools like Vite, Angular (since v17), Ruby on Rails (since v7), and Netlify Functions.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to programmatically use esbuild to bundle a TypeScript project, including creating dummy source files, handling imports, and configuring common build options like minification, source maps, and output format for Node.js. It shows the asynchronous `build` API and basic error handling.

import { build } from 'esbuild';
import { readFileSync, writeFileSync } from 'node:fs';
import { join } from 'node:path';

const entryPoint = join(process.cwd(), 'src/main.ts');
const outputDir = join(process.cwd(), 'dist');
const outputFile = join(outputDir, 'bundle.js');

const content = `
  // src/main.ts
  import { add } from './utils';
  console.log('Hello from esbuild!');
  const result = add(5, 3);
  console.log('5 + 3 =', result);
`;

const utilsContent = `
  // src/utils.ts
  export function add(a: number, b: number): number {
    return a + b;
  }
`;

// Create dummy source files for demonstration
writeFileSync(entryPoint, content);
writeFileSync(join(process.cwd(), 'src/utils.ts'), utilsContent);

// Ensure output directory exists
import { mkdirSync } from 'node:fs';
mkdirSync(outputDir, { recursive: true });

async function runBuild() {
  try {
    await build({
      entryPoints: [entryPoint],
      bundle: true,
      outfile: outputFile,
      platform: 'node',
      format: 'esm',
      target: 'es2022',
      minify: true,
      sourcemap: true,
      logLevel: 'info',
      external: ['node:fs', 'node:path'], // Mark Node.js built-ins as external
    });
    console.log('Build successful!');
    const bundledCode = readFileSync(outputFile, 'utf-8');
    console.log('\n--- Bundled Code (truncated) ---');
    console.log(bundledCode.substring(0, 500) + '...');
  } catch (e) {
    console.error('Build failed:', e.message);
    process.exit(1);
  }
}

runBuild();

view raw JSON →