From d52101d25b91a6ebfffd3315ea36ba4c74dc3c3e Mon Sep 17 00:00:00 2001 From: Eli Ribble Date: Tue, 7 Apr 2026 02:02:45 +0000 Subject: [PATCH] Begin work on nix deployment logic for vite --- default.nix | 63 +++++++++++++++++++--------------------- package.json | 3 +- vite/rmo/vite.config.js | 4 +-- vite/sync/vite.config.js | 4 +-- 4 files changed, 36 insertions(+), 38 deletions(-) diff --git a/default.nix b/default.nix index 9c5a876c..80d75f4f 100644 --- a/default.nix +++ b/default.nix @@ -27,54 +27,51 @@ pkgs.buildGoModule rec { pkgs.nodejs ]; - pnpmDeps = pnpmDeps; + pnpmDeps = pkgs.pnpm.fetchDeps { + fetcherVersion = 2; + hash = "sha256-UvE49UmVw8zVFHywxRWyzL0EiZvuZjmm9hA1U98o2sA="; + pname = "nidus-sync-frontend"; + src = ./.; + version = "0.0.11"; + }; preBuild = '' # Setup node_modules from pnpm dependencies export HOME=$(mktemp -d) pnpm config set store-dir $HOME/.pnpm-store -# Compile SCSS -SASS_SRC_DIR="./scss" -GEN_OUTPUT_DIR="./static/gen" +# Icon generation +mkdir -p "./ts/gen" +pnpm generate-icons -mkdir -p "$GEN_OUTPUT_DIR" +# Remove static links +# Build frontend +pnpm build-rmo +pnpm build-sync +cp vite/rmo/index.html static/gen/rmo/index.html +cp vite/sync/index.html static/gen/sync/index.html -echo "Compiling $SASS_SRC_DIR/style.scss to $GEN_OUTPUT_DIR/main.css..." -sass --style=compressed --trace "$SASS_SRC_DIR/style.scss":"$GEN_OUTPUT_DIR/main.css" +# Extract the hash from bundle.[hash].js +RMO_BUNDLE_FILE=$(ls vite/rmo/static/gen/js/bundle.*.js | grep -v '.map$' | head -n1) +RMO_BUNDLE_HASH=$(basename "$RMO_BUNDLE_FILE" | sed 's/bundle\.\(.*\)\.js/\1/') +SYNC_BUNDLE_FILE=$(ls vite/sync/static/gen/js/bundle.*.js | grep -v '.map$' | head -n1) +SYNC_BUNDLE_HASH=$(basename "$SYNC_BUNDLE_FILE" | sed 's/bundle\.\(.*\)\.js/\1/') -# Generate hash and rename style -STYLE_HASH=$(sha256sum "$GEN_OUTPUT_DIR/main.css" | cut -c1-12) -mv "$GEN_OUTPUT_DIR/main.css" "$GEN_OUTPUT_DIR/style.$STYLE_HASH.css" -echo "Generated CSS style with hash: $STYLE_HASH" - -# Bundle TypeScript -GEN_OUTPUT_DIR="./static/gen" -mkdir -p "$GEN_OUTPUT_DIR" - -echo "Bundling TypeScript with Vue..." -esbuild ts/main.ts \ - --bundle \ - --minify \ - --format=esm \ - --define:__VUE_OPTIONS_API__=true \ - --define:__VUE_PROD_DEVTOOLS__=false \ - --define:__VUE_PROD_HYDRATION_MISMATCH_DETAILS__=false \ - --alias:vue=vue/dist/vue.esm-bundler.js \ - --outfile="$GEN_OUTPUT_DIR/main.js" - -# Generate hash and rename bundle -BUNDLE_HASH=$(sha256sum "$GEN_OUTPUT_DIR/main.js" | cut -c1-12) -mv "$GEN_OUTPUT_DIR/main.js" "$GEN_OUTPUT_DIR/bundle.$BUNDLE_HASH.js" -echo "Generated JS bundle with hash: $BUNDLE_HASH" +# Extract the hash from style.[hash].css +RMO_STYLE_FILE=$(ls vite/rmo/static/gen/css/style.*.css | head -n1) +RMO_STYLE_HASH=$(basename "$RMO_STYLE_FILE" | sed 's/style\.\(.*\)\.css/\1/') +SYNC_STYLE_FILE=$(ls vite/sync/static/gen/css/style.*.css | head -n1) +SYNC_STYLE_HASH=$(basename "$SYNC_STYLE_FILE" | sed 's/style\.\(.*\)\.css/\1/') # Generate gen.go with bundle path cat > static/gen.go <