Vibeleaderboard
Index / tool
Visit jsr.io
Category
Developer Tools
Rank
Pricing
Open Source
Type
TOOL
Builder
denoland
GitHub
233 stars
Latest release
0.46.0
Date

About

Transpile and bundle JavaScript and TypeScript from Deno or Deno Deploy — use the Deno compiler programmatically.

What it does

It takes an entry module, builds its dependency graph, then either converts each supported source into JavaScript or combines the graph into one output. A TypeScript-facing layer handles locations, caching, import maps, and custom loading, while a WebAssembly-backed Rust core performs parsing, transformation, and code generation.

Why it's ranked here

The implementation offers unusually direct control over loading and compilation, with source maps, JSX modes, decorators, minification, import maps, and two bundle formats. However, the maintainers explicitly deprecate it, recommend alternatives, and call the API unstable. That makes it useful mainly for understanding or maintaining existing integrations.

What's good

Inputs can be local paths, file URLs, or remote URLs. A custom loader supports in-memory sources and explicit external modules. Bundles can be ES modules or classic scripts, optionally minified, with inline or separate source maps. Tests cover JSX variants, decorators, circular imports, JSON imports, import maps, and remote modules.

Tradeoffs

Deprecation is the decisive limitation for new work, and the documented API may still change. Bundling rejects unsupported module kinds. External import maps and redirected import maps are rejected. Some intended behaviors remain disabled in tests, including dynamic imports and shebang preservation, while remote import-map tests require an unavailable local server.

How to use it well

Use it when maintaining a Deno codebase already built around its library interface, especially when custom loading, import maps, or in-memory compilation matter. Keep compiler options narrow and test emitted output with snapshots. Do not adopt it as the foundation for a new build pipeline, and do not expect type checking or general task orchestration.

Technical notes+

js/mod.ts exposes bundle() and transpile(), creates a cache through @deno/cache-dir, normalizes roots through js/_utils.ts, validates source-map option combinations, serializes import maps, and calls the WebAssembly exports declared in js/emit.generated.d.ts. wasm/src/lib.rs bridges JavaScript loaders into Rust with wasm_bindgen and serde_wasm_bindgen. rs-lib/src/lib.rs builds deno_graph code-only module graphs, resolves import maps, validates transpilation graphs, and delegates bundling to rs-lib/src/emit.rs, which uses SWC through deno_ast, handles JSON conversion, source maps, minification, external modules, and import.meta rewriting via rs-lib/src/bundle_hook.rs. Tests under tests/ combine snapshot comparison with execution checks.

Observed

License
MIT License
Languages
Rust and TypeScript
Packaging
Published through JSR as @deno/emit
Interface
TypeScript library API backed by WebAssembly and a Rust library workspace
Platform
Deno and Deno Deploy
Testing structure
Repository includes a tests directory plus inline Rust unit tests
Project status
Deprecated, not recommended, and documented as unstable

Read from README.md, Cargo.toml, js/mod.ts, js/_utils.ts, js/emit.generated.d.ts, wasm/src/lib.rs, rs-lib/src/lib.rs, rs-lib/src/emit.rs, rs-lib/src/text.rs, rs-lib/src/bundle_hook.rs, tests/utils.ts, tests/jsx_test.ts, tests/bundle_test.ts, tests/common_test.ts, tests/import_map_test.ts.

What it can do

  • Transpile TypeScript to JavaScript

    TypeScript codeJavaScript code

  • Bundle multiple JavaScript modules

    Multiple JavaScript files/modulesSingle bundled JavaScript file

  • Bundle multiple TypeScript modules

    Multiple TypeScript files/modulesSingle bundled JavaScript file

  • Compile Deno projects programmatically

    Deno project source codeCompiled JavaScript output

  • Transform code for Deno Deploy deployment

    Deno application codeDeploy-ready JavaScript code

Tags

denobundlertypescripttranspiler

Tech Stack

Rust

Media

deno_emit

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.