The site is built with VuePress and reuses its default theme to ease upgrading to newer versions.
The more important files are:
- src/**/*.md
Documentation and site contents, i.e. what one would typically modify when extending the documentation. - src/.vuepress/sidebar.js
Sidebar contents. - src/.vuepress/nav.js
Top-navigation contents. - src/.vuepress/redirects
Redirect map of (re)moved pages to new locations. - src/.vuepress/public/
Assets folder for images etc. - src/.vuepress/public/sponsors
Sponsor logo overrides (file name is collective name).
Markdown files can make use of a custom editor component using the editor
language tag, like so:
```editor
#!optimize=size&runtime=none&noAssert&explicitStart&enable=simd,reference-types
export function add(a: i32, b: i32): i32 {
return a + b
}
#!html
<script type="module">
const exports = await instantiate(await compile(), { /* imports */ })
console.log(exports.add(1, 2))
</script>
```
The first line is an optional shebang indicating selected compiler options. Available options are:
- optimize =
string
Optimization preset to use. Valid presets arespeed
,size
andnone
- noAssert
Replaces assertions with just their value without trapping. - debug
Enables debug information in emitted binaries. - runtime =
string
Specifies the runtime variant to include in the program. Valid variants arefull
,half
,stub
andnone
. - noExportMemory
Does not export the memory to the host. - importMemory
Imports the memory from the host. - exportTable
Exports the function table to the host. - importTable
Imports the function table from the host. - explicitStart
Exports an explicit start function to call. - memoryBase =
integer
Sets the start offset of emitted memory segments. - tableBase =
integer
Sets the start offset of emitted table elements. - use =
string
Comma separated list of global aliases, e.g. to switch the default 'Math' implementation used:Math=JSMath
- enable =
string
Comma-separated list of future WebAssembly features to enable. Valid features aresign-extension
,bulk-memory
,simd
,threads
andreference-types
.
The current source and associated compiler options can be serialized into a base64 blob this way. For example, when the 🔗 button is clicked, document.location.hash
is updated with that blob and the then-sharable link is copied to clipboard.
To work on the site locally, install the dependencies and start a development server serving at localhost:8080:
npm install
npm start
To build the site to dist
, i.e. to verify that it works as expected:
npm run build
Distribution files can also be served instead of using the development server with:
npm run serve
The page is automatically deployed on pushes to the repository, plus at least once a day to sync contributors and sponsors.