emsdk
v0.4.0
Published
Emscripten SDK for npm — install with npm, use emcc immediately
Downloads
229
Maintainers
Readme
emsdk
Emscripten SDK for npm. Install a specific Emscripten version with npm install and use emcc immediately — no manual SDK setup, no global installation.
Quick Start
# Install Emscripten 4.0.23
npm install [email protected]
# Compile C to WebAssembly
npx emcc hello.c -o hello.html
# Compile C++ to WebAssembly
npx em++ main.cpp -o main.jsThe postinstall script automatically downloads the pre-built Emscripten toolchain (~300 MB) from Google Cloud Storage on first install.
Prerequisites
- Node.js 18+
- Python 3 (required by Emscripten's
emcccompiler) - macOS or Linux (Windows support planned)
How It Works
npm install [email protected]installs a small JS package and triggers postinstall- The postinstall script downloads the official pre-built Emscripten toolchain from Google Cloud Storage
- The toolchain is extracted to the OS-native cache directory (shared across projects)
npx emcc,npx em++, andnpx emrunare available immediately
Cache locations follow OS conventions:
| OS | Default path |
|----|-------------|
| macOS | ~/Library/Caches/emsdk/4.0.23/ |
| Linux | ~/.cache/emsdk/4.0.23/ |
| Windows | %LOCALAPPDATA%\emsdk\4.0.23\ |
The npm package version maps 1:1 to the Emscripten version.
CLI Usage
# Compile C to WebAssembly
npx emcc input.c -o output.js
# Compile C++ with optimizations
npx em++ -O2 main.cpp -o main.js
# Run a local web server for testing
npx emrun output.htmlProgrammatic API
const emsdk = require('emsdk');
// Get paths to tools
console.log(emsdk.emccPath()); // ~/Library/Caches/emsdk/4.0.23/install/emscripten/emcc (macOS)
console.log(emsdk.emppPath()); // ~/Library/Caches/emsdk/4.0.23/install/emscripten/em++ (macOS)
// Get environment variables for spawning processes
const env = emsdk.env();
// { EMSDK: '...', EM_CONFIG: '...', PATH: '...', ... }
// Run a tool programmatically
emsdk.run('emcc', ['hello.c', '-o', 'hello.js']);
// Check if installed
if (emsdk.isInstalled()) {
console.log('Ready to compile!');
}Configuration
Cache Location
The toolchain is cached in the OS-native cache directory by default. Override with:
EMSDK_CACHE=/custom/path npm install emsdkMultiple Versions
Different projects can use different Emscripten versions:
# Project A
npm install [email protected]
# Project B
npm install [email protected]Each version is cached separately in the OS cache directory.
Supported Platforms
| Platform | Architecture | Status | |----------|-------------|--------| | macOS | ARM64 (Apple Silicon) | Supported | | macOS | x64 (Intel) | Supported | | Linux | x64 | Supported | | Linux | ARM64 | Supported | | Windows | x64 | Planned |
License
MIT
