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. - 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). - src/.vuepress/styles/index.styl
Additional styling rules.
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>
loader.instantiate(module_wasm, { /* imports */ })
.then(({ exports }) => {
console.log(exports.add(1, 2))
})
</script>
```
The first line is an optional shebang indicating selected compiler options. Available options are:
- optimize = speed | size | none
- noAssert?
- debug?
- runtime = full | half | stub | none
- noExportMemory?
- importMemory?
- exportTable?
- importTable?
- explicitStart?
- enable? = sign-extension?,bulk-memory?,simd?,threads?,reference-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
The page is automatically deployed on pushes to the repository, and at least once a day to sync sponsors.