diff --git a/package.json b/package.json index 57c01624e..95cef1c8d 100644 --- a/package.json +++ b/package.json @@ -93,11 +93,9 @@ "fetch:wasm:windows": "./scripts/get-latest-wasm-bundle.ps1", "fetch:samples": "rm -rf public/kcl-samples* && curl -L -o public/kcl-samples.zip https://github.com/KittyCAD/kcl-samples/archive/refs/heads/achalmers/kw-args-xylineto.zip && unzip -o public/kcl-samples.zip -d public && mv public/kcl-samples-* public/kcl-samples", "build:wasm-dev": "yarn wasm-prep && (cd rust && wasm-pack build kcl-wasm-lib --dev --target web --out-dir pkg && cargo test -p kcl-lib export_bindings) && yarn isomorphic-copy-wasm && yarn fmt", - "build:wasm:nocopy": "yarn wasm-prep && cd rust && RUSTFLAGS='--cfg getrandom_backend=\"wasm_js\"' wasm-pack build kcl-wasm-lib --release --target web --out-dir pkg && cargo test -p kcl-lib export_bindings", - "build:wasm": "yarn build:wasm:nocopy && cp rust/kcl-wasm-lib/pkg/kcl_wasm_lib_bg.wasm public && yarn fmt", - "build:wasm:windows": "yarn install:wasm-pack:cargo && yarn build:wasm:nocopy && ./scripts/copy-wasm.ps1 && yarn fmt", + "build:wasm": "./scripts/build-wasm.sh", + "build:wasm:windows": "./scripts/build-wasm.ps1", "remove-importmeta": "sed -i 's/import.meta.url/window.location.origin/g' \"./rust/kcl-wasm-lib/pkg/kcl_wasm_lib.js\"; sed -i '' 's/import.meta.url/window.location.origin/g' \"./rust/kcl-wasm-lib/pkg/kcl_wasm_lib.js\" || echo \"sed for both mac and linux\"", - "wasm-prep": "rimraf rust/kcl-wasm-lib/pkg && mkdirp rust/kcl-wasm-lib/pkg && rimraf rust/kcl-lib/bindings", "lint-fix": "eslint --fix --ext .ts --ext .tsx src e2e packages/codemirror-lsp-client/src rust/kcl-language-server/client/src", "lint": "eslint --max-warnings 0 --ext .ts --ext .tsx src e2e packages/codemirror-lsp-client/src rust/kcl-language-server/client/src", "files:set-version": "echo \"$(jq --arg v \"$VERSION\" '.version=$v' package.json --indent 2)\" > package.json", diff --git a/scripts/build-wasm.ps1 b/scripts/build-wasm.ps1 new file mode 100644 index 000000000..436c4433d --- /dev/null +++ b/scripts/build-wasm.ps1 @@ -0,0 +1,18 @@ +# Stop the script when a cmdlet or a native command fails +# from https://www.meziantou.net/stop-the-script-when-an-error-occurs-in-powershell.htm +$ErrorActionPreference = 'Stop' +$PSNativeCommandUseErrorActionPreference = $true + +rm -Recurse -Force rust/kcl-wasm-lib/pkg +mkdir -p rust/kcl-wasm-lib/pkg +rm -Recurse -Force rust/kcl-lib/bindings + +cd rust +$env:RUSTFLAGS='--cfg getrandom_backend="wasm_js"' +wasm-pack build kcl-wasm-lib --release --target web --out-dir pkg +$env:RUSTFLAGS='' +cargo test -p kcl-lib export_bindings +cd .. + +copy rust\kcl-wasm-lib\pkg\kcl_wasm_lib_bg.wasm public +yarn fmt diff --git a/scripts/build-wasm.sh b/scripts/build-wasm.sh new file mode 100755 index 000000000..4e4fbcd9d --- /dev/null +++ b/scripts/build-wasm.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -euo pipefail + +rm -rf rust/kcl-wasm-lib/pkg +mkdir -p rust/kcl-wasm-lib/pkg +rm -rf rust/kcl-lib/bindings + +cd rust +export RUSTFLAGS='--cfg getrandom_backend="wasm_js"' +wasm-pack build kcl-wasm-lib --release --target web --out-dir pkg +export RUSTFLAGS='' +cargo test -p kcl-lib export_bindings +cd .. + +cp rust/kcl-wasm-lib/pkg/kcl_wasm_lib_bg.wasm public +yarn fmt diff --git a/scripts/copy-wasm.ps1 b/scripts/copy-wasm.ps1 deleted file mode 100644 index fff188d94..000000000 --- a/scripts/copy-wasm.ps1 +++ /dev/null @@ -1 +0,0 @@ -copy rust\kcl-wasm-lib\pkg\kcl_wasm_lib_bg.wasm public