The Build Output & Artifact Management for Land 🏞️
Build processes that produce different artifacts depending on the machine, CI environment, or implicit tool versions make debugging production issues impossible.
"Same commit. Same output. Every time."
Welcome to Output, the build output and artifact management package for the
Land Code Editor. Output handles the compilation, processing, and
distribution of source code from various dependencies including VSCode,
CodeEditorLand Editor, and the Rest compiler pipeline.
Output is engineered to:
- Orchestrate Multi-Compiler Builds: Support both
esbuildandRest(OXC-based) compilation pipelines with seamless integration. - Manage Build Artifacts: Organize and deliver optimized
JavaScriptartifacts for consumption bySky,Wind, andCocoon. - Provide Hybrid Workflows: Enable incremental migration from
esbuildtoRestthrough conditional compilation and plugin-based architecture. - Ensure Build Reproducibility: Maintain consistent output through deterministic build configurations and artifact verification.
- Dual-Compiler Support: Seamlessly switch between
esbuild(default) andRest(OXC-powered) compilers via environment variables. - Rest Plugin Integration: Custom
esbuildplugin that interceptsTypeScriptcompilation and delegates to theRestcompiler. - Source Map Generation: Full support for development source maps with configurable generation strategies.
- Artifact Merging: Intelligent merging of
Restcompiler output withesbuildbundles for hybrid workflows. - Verbose Logging: Comprehensive build diagnostics with configurable verbosity levels for troubleshooting.
- Path Override: Flexible binary path configuration for Rest compiler discovery in diverse environments.
| Principle | Description | Key Components Involved |
|---|---|---|
| Compatibility | Maintain backward compatibility with esbuild while enabling Rest compiler adoption through plugin architecture. | Source/ESBuild/RestPlugin.ts, Source/prepublishOnly.sh |
| Modularity | Separation of concerns between build orchestration, compiler plugins, and artifact management. | Source/ESBuild/Output.ts, Source/ESBuild/RestPlugin.ts |
| Performance | Leverage Rest's OXC-based compiler for 10-100x speedup on TypeScript transpilation tasks. | Rest compiler integration, parallel processing |
| Flexibility | Environment-driven configuration enables different build strategies per deployment scenario. | Compiler environment variable, REST_* variables |
| Observability | Comprehensive logging and diagnostics for build process visibility and troubleshooting. | REST_VERBOSE, REST_OPTIONS configuration |
The Rest compiler integration enables OXC-based TypeScript compilation as an alternative or complement to esbuild.
Rest leverages the OXC (Oxidation Compiler) ecosystem, a high-performance JavaScript/TypeScript toolchain written in Rust. The OXC stack provides:
oxc_parser: Ultra-fast JavaScript/TypeScript parser with ESTree compatibilityoxc_transformer: AST transformation engine supporting TypeScript, JSX, and modern ECMAScript featuresoxc_codegen: Efficient code generation from ASToxc_semantic: Semantic analysis and symbol table construction
When Compiler=Rest is configured, the build pipeline intercepts TypeScript
file processing and delegates to the Rest compiler before merging results back
into the esbuild output stream.
Source/ → esbuild → Configuration/ → Target/
Source/ → esbuild → Configuration/ → Target/
Dependency/ → Rest → Target/Rest/ → Configuration/ → Target/
| Variable | Default | Description |
|---|---|---|
Compiler |
esbuild |
Compiler to use (esbuild or Rest) |
REST_BINARY_PATH |
auto-detect | Override Rest binary location |
REST_OPTIONS |
empty | Additional Rest compiler flags |
REST_VERBOSE |
false |
Enable verbose Rest logging |
Dependency |
Microsoft/VSCode |
Source dependency to process |
NODE_ENV |
production |
Build environment (development or production) |
| Feature | esbuild | Rest (OXC) |
|---|---|---|
| Implementation | Go-based | Rust-based (OXC) |
| TypeScript Support | Full | Full |
| Speed | Very Fast (10-100x tsc) | Ultra-Fast (parallel, OXC) |
| Source Maps | Yes | Yes |
| Tree Shaking | Yes | Yes |
| Plugin System | Rich ecosystem | Emerging |
| Best For | General bundling | TypeScript-heavy projects |
| Watch Mode | Yes | Yes (via notify) |
| Minification | Yes | Yes (oxc_minifier) |
Source/ESBuild/Output.ts- ESBuild configuration with ESM format, Node.js platform, ES Next target, and conditional Rest plugin integrationSource/ESBuild/RestPlugin.ts- TypeScript file interception, Rest compiler invocation, source map generation, and fallback to esbuild on errorsSource/prepublishOnly.sh- Build orchestration script
Output/
├── Source/
│ ├── ESBuild.ts # ESBuild entry point and configuration.
│ ├── ESBuild/
│ │ ├── Output.ts # ESBuild output compilation settings.
│ │ ├── CodeEditorLand/ # CodeEditorLand-specific build targets.
│ │ ├── Microsoft/ # Microsoft/VSCode build targets.
│ │ ├── Rest/ # Rest (OXC) compiler integration.
│ │ └── Exclude/ # Module exclusion patterns.
│ ├── Apply/
│ │ └── Pipeline.ts # Transform pipeline orchestration.
│ ├── Plugin/
│ │ ├── Index.ts # Plugin registration and composition.
│ │ ├── Type.ts # Plugin type definitions.
│ │ ├── Apply.ts # Plugin application logic.
│ │ ├── Copy/ # Asset copy plugin.
│ │ ├── Polyfill/ # Polyfill injection plugin.
│ │ └── Transform/ # AST transform plugin.
│ ├── Polyfill/
│ │ ├── Telemetry.ts # Telemetry polyfill.
│ │ ├── Child/ # Child process polyfills.
│ │ ├── File/ # File system polyfills.
│ │ ├── IPC/ # IPC polyfills.
│ │ ├── Native/ # Native module polyfills.
│ │ ├── Process/ # Process polyfills.
│ │ └── Shared/ # Shared polyfill utilities.
│ ├── Asset/
│ │ └── Style/ # Asset style processing.
│ ├── Service/
│ │ ├── Trace.ts # Build tracing utilities.
│ │ ├── CEL/ # CodeEditorLand service helpers.
│ │ ├── Dev/ # Development service helpers.
│ │ └── Tauri/ # Tauri service helpers.
│ ├── tsconfig/ # TypeScript configuration profiles.
│ ├── prepublishOnly.sh # Build orchestration script.
│ └── Run.sh # Development watch mode.
├── Configuration/
│ └── ESBuild/ # ESBuild build profiles.
├── Target/ # Build output destination.
└── package.json
pnpm add @codeeditorland/output# Default esbuild build
npm run prepublishOnly
# Rest compiler build
export Compiler=Rest
npm run prepublishOnly
# Development mode with Rest
export NODE_ENV=development
export Compiler=Rest
npm run RunRest Binary Not Found:
export REST_BINARY_PATH=/usr/local/bin/restCompilation Errors - enable verbose logging:
export REST_VERBOSE=trueSource Maps Not Generated:
export NODE_ENV=developmentThis project is released into the public domain under the Creative Commons CC0
Universal license. You are free to use, modify, distribute, and build upon
this work for any purpose, without any restrictions. For the full legal text,
see the
LICENSE file.
Stay updated with our progress! See
CHANGELOG.md
for a history of changes specific to Output.
Output is a core element of the Land ecosystem. This project is funded through NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.
The project is operated by PlayForm, based in Sofia, Bulgaria.
PlayForm acts as the open-source steward for Code Editor Land under the NGI0 Commons Fund grant.
| Land | PlayForm | NLnet | NGI0 Commons Fund |
|---|---|---|---|
|
|
|
|
|
Project Maintainers: Source Open (Source/Open@Editor.Land) | GitHub Repository | Report an Issue | Security Policy