From d23e9fb4e3abea0dfafdcd75cdb7ff4398d1d7ff Mon Sep 17 00:00:00 2001 From: Ike Kottlowski Date: Tue, 18 Mar 2025 11:59:55 -0400 Subject: [PATCH 1/2] feat : adding powershell build script for windows development --- crates/bitwarden-wasm-internal/build.ps1 | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 crates/bitwarden-wasm-internal/build.ps1 diff --git a/crates/bitwarden-wasm-internal/build.ps1 b/crates/bitwarden-wasm-internal/build.ps1 new file mode 100644 index 000000000..148862d7d --- /dev/null +++ b/crates/bitwarden-wasm-internal/build.ps1 @@ -0,0 +1,35 @@ +# Move to the root of the repository +Set-Location -Path (Join-Path (Get-Location) "..\..") + +# Write VERSION file +git rev-parse HEAD | Out-File -FilePath ./crates/bitwarden-wasm-internal/npm/VERSION -Force + +if ($args[0] -ne "-r") { + Write-Host "Building in debug mode" + $RELEASE_FLAG = "" + $BUILD_FOLDER = "debug" +} else { + Write-Host "Building in release mode" + $RELEASE_FLAG = "--release" + $BUILD_FOLDER = "release" +} + +# Build with MVP CPU target +$env:RUSTFLAGS = "-Ctarget-cpu=mvp" +$env:RUSTC_BOOTSTRAP = "1" +cargo build -p bitwarden-wasm-internal -Zbuild-std="panic_abort,std" --target wasm32-unknown-unknown $RELEASE_FLAG + +# Run wasm-bindgen +wasm-bindgen --target bundler --out-dir crates/bitwarden-wasm-internal/npm ./target/wasm32-unknown-unknown/$BUILD_FOLDER/bitwarden_wasm_internal.wasm +wasm-bindgen --target nodejs --out-dir crates/bitwarden-wasm-internal/npm/node ./target/wasm32-unknown-unknown/$BUILD_FOLDER/bitwarden_wasm_internal.wasm + +# Format +npx prettier --write ./crates/bitwarden-wasm-internal/npm + +# Optimize size +wasm-opt -Os ./crates/bitwarden-wasm-internal/npm/bitwarden_wasm_internal_bg.wasm -o ./crates/bitwarden-wasm-internal/npm/bitwarden_wasm_internal_bg.wasm +wasm-opt -Os ./crates/bitwarden-wasm-internal/npm/node/bitwarden_wasm_internal_bg.wasm -o ./crates/bitwarden-wasm-internal/npm/node/bitwarden_wasm_internal_bg.wasm + +# Transpile to JS +wasm2js ./crates/bitwarden-wasm-internal/npm/bitwarden_wasm_internal_bg.wasm -o ./crates/bitwarden-wasm-internal/npm/bitwarden_wasm_internal_bg.wasm.js +npx terser ./crates/bitwarden-wasm-internal/npm/bitwarden_wasm_internal_bg.wasm.js -o ./crates/bitwarden-wasm-internal/npm/bitwarden_wasm_internal_bg.wasm.js From 18fd15ac776075e6ccd22fbb03efe265042f587e Mon Sep 17 00:00:00 2001 From: Ike <137194738+ike-kottlowski@users.noreply.github.com> Date: Tue, 18 Mar 2025 12:31:13 -0400 Subject: [PATCH 2/2] Update build.ps1 Updating comments --- crates/bitwarden-wasm-internal/build.ps1 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/bitwarden-wasm-internal/build.ps1 b/crates/bitwarden-wasm-internal/build.ps1 index 148862d7d..9527713e8 100644 --- a/crates/bitwarden-wasm-internal/build.ps1 +++ b/crates/bitwarden-wasm-internal/build.ps1 @@ -14,7 +14,12 @@ if ($args[0] -ne "-r") { $BUILD_FOLDER = "release" } -# Build with MVP CPU target +# Build with MVP CPU target, two reasons: +# 1. It is required for wasm2js support +# 2. While webpack supports it, it has some compatibility issues that lead to strange results +# Note that this requirest build-std which is an unstable feature, +# this normally requires a nightly build, but we can also use the +# RUSTC_BOOTSTRAP hack to use the same stable version as the normal build $env:RUSTFLAGS = "-Ctarget-cpu=mvp" $env:RUSTC_BOOTSTRAP = "1" cargo build -p bitwarden-wasm-internal -Zbuild-std="panic_abort,std" --target wasm32-unknown-unknown $RELEASE_FLAG