@blankparticle/yoga-layout
v0.0.1-rc.1
Published
A drop-in TypeScript implementation of the Yoga layout engine
Downloads
55
Readme
@blankparticle/yoga-layout
A pure TypeScript implementation of the Yoga layout engine, optimized for JavaScript runtimes. It exposes the same ESM entry points as yoga-layout while avoiding the JavaScript-to-WebAssembly boundary.
The package name and repository name are provisional until publication. The implementation is validated against the upstream Yoga source snapshot pinned in upstream/yoga; the npm Yoga 3.2.1 package is retained as the compatibility reference used by Ink.
Using it as an override
Once published, a pnpm consumer can replace Yoga without changing application code:
{
"pnpm": {
"overrides": {
"yoga-layout": "npm:@blankparticle/yoga-layout@<version>"
}
}
}For local development, point the override at this directory instead:
{
"pnpm": {
"overrides": {
"yoga-layout": "file:../yoga-layout-js"
}
}
}The package ships compiled ESM and TypeScript declarations. Consumers do not need a TypeScript loader and do not compile the engine's source.
Development
vp install
vpr typecheck
vpr test
vpr build
vpr test:package
vpr benchmark
vpr benchmark:inkThe Ink benchmark links the checkout at ../../vadimdemedes/ink and runs the
same Ink rerender workload in isolated processes against this engine and the
npm Yoga 3.2.1 WASM build.
The test layers are:
- the Yoga unit and generated conformance suites in
test/; - differential scenarios in
test/differential/, compared to the WebAssembly build from the pinned upstream commit; - a representative compatibility test against the npm Yoga 3.2.1 API used by Ink;
- a built-package API smoke test in
test/package/; - an Ink override fixture in
integration/ink/.
Build the root package before running the Ink fixture:
vpr build
vp -C integration/ink install
vpr test:inkUpstream source
upstream/yoga is an unmodified Git submodule. It keeps the C++ implementation and test corpus available for porting and auditing without mixing it into the package source. upstream/yoga-wasm-base64-esm.js is the matching conformance oracle used by the tests.
git submodule update --initYoga is Copyright (c) Meta Platforms, Inc. and affiliates and is distributed under the MIT license.
