diff --git a/Cargo.toml b/Cargo.toml index 4a3cd1450caf..ab755c82c240 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -84,6 +84,10 @@ lto = "fat" codegen-units = 1 opt-level = 's' # Optimize for size. +[profile.wasm-release] +inherits = "release" +opt-level = 'z' # Aggressively optimize for size + [profile.profiling] inherits = "release" debug = true diff --git a/nix/prisma-schema-wasm.nix b/nix/prisma-schema-wasm.nix index b0f0c3d2d54a..6e74d94525dc 100644 --- a/nix/prisma-schema-wasm.nix +++ b/nix/prisma-schema-wasm.nix @@ -9,10 +9,10 @@ in { packages.prisma-schema-wasm = stdenv.mkDerivation { name = "prisma-schema-wasm"; - nativeBuildInputs = with pkgs; [ git wasm-bindgen-cli toolchain ]; + nativeBuildInputs = with pkgs; [ git wasm-bindgen-cli toolchain binaryen ]; inherit (self'.packages.prisma-engines) configurePhase src; - buildPhase = "cargo build --release --target=wasm32-unknown-unknown -p prisma-schema-build"; + buildPhase = "cargo build --profile=wasm-release --target=wasm32-unknown-unknown -p prisma-schema-build"; installPhase = readFile "${scriptsDir}/install.sh"; }; diff --git a/prisma-schema-wasm/scripts/install.sh b/prisma-schema-wasm/scripts/install.sh index 541eca728805..6c2b8bee9a7c 100755 --- a/prisma-schema-wasm/scripts/install.sh +++ b/prisma-schema-wasm/scripts/install.sh @@ -14,8 +14,13 @@ cp ./prisma-schema-wasm/package.json "$out"/ printf '%s\n' " -> Copying README.md" cp ./prisma-schema-wasm/README.md "$out"/ +printf '%s\n' " -> Optimizing WASM binary for size" +wasm-opt -Oz \ + target/wasm32-unknown-unknown/wasm-release/prisma_schema_build.wasm \ + -o target/prisma_schema_build.wasm + printf '%s\n' " -> Generating node package" wasm-bindgen \ --target nodejs \ --out-dir "$out"/src \ - target/wasm32-unknown-unknown/release/prisma_schema_build.wasm + target/prisma_schema_build.wasm