You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "Copilot (via GitHub)" <gi...@apache.org> on 2026/04/02 00:48:29 UTC

Re: [PR] Skip pnpm install in UI pre-commit hook when deps are unchanged [airflow]

Copilot commented on code in PR #64124:
URL: https://github.com/apache/airflow/pull/64124#discussion_r3025334173


##########
scripts/ci/prek/ts_compile_lint_ui.py:
##########
@@ -50,8 +52,20 @@
         all_ts_files.append("src/vite-env.d.ts")
     print("All TypeScript files:", all_ts_files)
 
-    run_command(["pnpm", "config", "set", "store-dir", ".pnpm-store"], cwd=dir)
-    run_command(["pnpm", "install", "--frozen-lockfile", "--config.confirmModulesPurge=false"], cwd=dir)
+    hash_file = AIRFLOW_ROOT_PATH / ".build" / "ui" / "pnpm-install-hash.txt"
+    node_modules = dir / "node_modules"
+    current_hash = hashlib.sha256(
+        (dir / "package.json").read_bytes() + (dir / "pnpm-lock.yaml").read_bytes()
+    ).hexdigest()
+    stored_hash = hash_file.read_text().strip() if hash_file.exists() else ""
+
+    if node_modules.exists() and current_hash == stored_hash:
+        print("pnpm deps unchanged — skipping install.")
+    else:
+        run_command(["pnpm", "config", "set", "store-dir", ".pnpm-store"], cwd=dir)
+        run_command(["pnpm", "install", "--frozen-lockfile", "--config.confirmModulesPurge=false"], cwd=dir)

Review Comment:
   The cache-hit condition can become a false positive if `node_modules/` is modified outside this hook (e.g., running `pnpm install` manually or via another prek hook) without updating `.build/ui/pnpm-install-hash.txt`. In that case `current_hash == stored_hash` can still be true while `node_modules` no longer corresponds to the current lockfile, causing the hook to skip the needed install and then run eslint/tsc against mismatched deps. Consider adding an extra validity check tied to the actual `node_modules` state (e.g., compare timestamps, or read pnpm’s `node_modules/.modules.yaml` lockfile checksum) before skipping.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org