| PathKit WASM API |
| ================ |
| |
| The [PathKit](https://skia.org/docs/user/modules/pathkit/) library lets you use |
| Skia's feature-rich PathOps API in the browser. |
| |
| Compiling the source |
| -------------------- |
| |
| ### Compiling with GN |
| |
| Get a compiled [Enscriptem SDK](https://kripken.github.io/emscripten-site/docs/getting_started/downloads.html) |
| in your path. This is easiest done by running `//tools/git-sync-deps` which |
| downloads and then runs `//bin/activate-emsdk`. |
| |
| To compile a production WASM build to `//out/pathkit`: |
| |
| ```sh |
| ./compile.sh |
| ``` |
| |
| Add `--help` for more options. |
| |
| ### Compiling with Bazel |
| |
| To compile a production WASM build to `//bazel-bin/modules/pathkit/pathkit`: |
| |
| ```sh |
| bazelisk build //modules/pathkit:pathkit --config=ck_full_webgl2_release |
| ``` |
| |
| A debug build: |
| |
| ```sh |
| bazelisk build //modules/pathkit:pathkit --config=ck_full_webgl2_debug |
| ``` |
| |
| Testing |
| ------- |
| |
| ### Running example page locally: |
| |
| ```sh |
| # First build PathKit |
| make release |
| # Then run a local test server |
| make local-example |
| ``` |
| |
| Then follow messages to navigate the browser to the example page. |
| |
| ### Automated tests |
| |
| **Testing the GN build** |
| |
| ```sh |
| make release |
| make npm |
| npm ci |
| make test-continuous |
| ``` |
| |
| **Testing the Bazel build** |
| |
| ```sh |
| make debug-bazel |
| make npm-bazel |
| npm ci |
| make test-continuous |
| ``` |
| |
| Deploying to npm |
| ---------------- |
| |
| NOTE: The deployment steps use the GN build. |
| |
| ```sh |
| # Build the release version for both asmjs and WASM |
| # These binaries will be placed in the proper places of npm-*/bin |
| make npm |
| |
| # In each npm- subdirectory, run: |
| npm version minor (or patch or major) |
| npm login --registry https://wombat-dressing-room.appspot.com |
| npm publish |
| ``` |