From dde6e54657956b9c931ab90dd96419e083cd7b8c Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Tue, 6 May 2025 18:26:48 -0700 Subject: [PATCH] Add build in production script --- build-in-production.sh | 19 +++++++++++++++++++ remove-pnpm-overrides.js | 20 ++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100755 build-in-production.sh create mode 100644 remove-pnpm-overrides.js diff --git a/build-in-production.sh b/build-in-production.sh new file mode 100755 index 0000000..0d3c9e9 --- /dev/null +++ b/build-in-production.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Fetch tags and set to env vars +git fetch --prune --unshallow --tags +git describe --tags --abbrev=0 +export VITE_BUILD_VERSION=$RENDER_GIT_COMMIT +export VITE_BUILD_HASH=$RENDER_GIT_COMMIT + +# Remove link overrides +node remove-pnpm-overrides.js package.json + +# When CI=true as it is on render.com, removing link overrides breaks the lockfile +pnpm i --no-frozen-lockfile + +# Rebuild sharp +pnpm rebuild + +# The build runs out of memory at times +NODE_OPTIONS=--max_old_space_size=16384 pnpm run build diff --git a/remove-pnpm-overrides.js b/remove-pnpm-overrides.js new file mode 100644 index 0000000..1b493b1 --- /dev/null +++ b/remove-pnpm-overrides.js @@ -0,0 +1,20 @@ +// This script is necessary for installing stuff on a host, since our links don't exist there. + +import fs from "fs" + +const pkgName = process.argv[2] + +if (!pkgName?.endsWith("package.json")) { + console.log("File passed was not a package.json file") + process.exit(1) +} + +const pkg = JSON.parse(fs.readFileSync(pkgName, "utf8")) + +if (pkg.pnpm && pkg.pnpm.overrides) { + delete pkg.pnpm.overrides + fs.writeFileSync(pkgName, JSON.stringify(pkg, null, 2) + "\n") + console.log("Removed pnpm.overrides from package.json") +} else { + console.log("No pnpm.overrides found in package.json") +}