- Notifications
You must be signed in to change notification settings - Fork81
JavaScript toolchain for working with WebAssembly Components
License
bytecodealliance/jco
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
JavaScript tooling forWebAssembly Components
ABytecode Alliance project
Jco (jco
) provides aJavascript-native toolchain for working withWebAssembly Components.
Jco aims to be a convenient multi-tool for the JS WebAssembly ecosystem.
With Jco (and related projects in this repository), you can:
- Build WebAssembly components from Javascript/Typescript with the help of
componentize-js
- "Transpile" WebAssembly components into ES modules that can run in environments like NodeJS and the browser, combining platform-native WebAssembly core support with the advanced features of WebAssembly Components
- Run WebAssembly components whether single-shot applications or web servers (similar to
wasmtime run
/wasmtime serve
) - Reuse WebAssembly component workflows (e.g. building components, tranpsiling, etc) from your own JS projects
- Utilize
wasm-tools
as a library from JS
As Jco aims to do many things, it contains many subprojects that are organized in this repository:
Subproject | Language | Directory | Description |
---|---|---|---|
jco | Javascript | packages/jco | Thejco CLI |
jco-transpile | Javascript | packages/jco-transpile | WebAssembly Component Transpilation functionaltiy |
preview2-shim | Javascript | packages/preview2-shim | Library that provides a mapping ofWASI Preview 2 for NodeJS and Browsers |
preview3-shim | Javascript | packages/preview3-shim | Library that provides a mapping of WASI Preview 3 for NodeJS |
js-component-bindgen | Rust | crates/js-component-bindgen | Enablesjco transpile and other features, reusing the Rust WebAssembly ecosystem |
js-component-bindgen-component | Rust | crates/js-component-bindgen-component | WebAssembly component that (when transipled) makesjs-component-bindgen available in JSjco |
wasm-tools-component | Rust | crates/wasm-tools-component | WebAssembly component containing pieces ofwasm-tools used byjco |
Jco can be used as either a library import or as a CLI via thejco
command.
To install it, usenpm
(or your favoritenpm
equivalent):
npm install @bytecodealliance/jco
Note
If you're using jco to build components, you should also installcomponentize-js
, which is dynamically imported:
npm install @bytecodealliance/componentize-js
For instructions on how to build an example component, see theComponent model section on Javascript.
To see examples of common patterns, check out theexample components folder (examples/components
).
For a deeper guide on the intricacies of Jco, read theJco Book.
This project is licensed under the Apache 2.0 license with the LLVM exception.SeeLICENSE for more details.
See theContributing chapter of the Jco book.
Unless you explicitly state otherwise, any contribution intentionally submittedfor inclusion in this project by you, as defined in the Apache-2.0 license,shall be licensed as above, without any additional terms or conditions.
About
JavaScript toolchain for working with WebAssembly Components
Resources
License
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.