From ad2fb518f8ffab4c81e1625b7cad6e493ccced1b Mon Sep 17 00:00:00 2001 From: mateo-berri <277851410+mateo-berri@users.noreply.github.com> Date: Sat, 1 Aug 2026 14:53:06 -0700 Subject: [PATCH 1/2] build(makefile): skip npm ci in bootstrap when ui deps are unchanged --- Makefile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e9b2fb9d8f1..52105e76e7e 100644 --- a/Makefile +++ b/Makefile @@ -75,7 +75,14 @@ install-dev: bootstrap: $(UV) sync --inexact --frozen --extra proxy --group proxy-dev --group e2e-dev $(UV_RUN) python scripts/prisma_generate_if_needed.py - cd ui/litellm-dashboard && npm ci --no-audit --no-fund + @cd ui/litellm-dashboard && \ + dep_hash=$$(git hash-object package.json package-lock.json); \ + stamp=node_modules/.bootstrap-stamp; \ + if [ "$$(cat "$$stamp" 2>/dev/null)" = "$$dep_hash" ]; then \ + echo "bootstrap: ui deps up to date, skipping npm ci"; \ + else \ + npm ci --no-audit --no-fund && echo "$$dep_hash" > "$$stamp"; \ + fi @main_root=$$(git worktree list --porcelain | head -1 | sed 's/^worktree //'); \ if [ "$$main_root" != "$$(git rev-parse --show-toplevel)" ] && [ -f "$$main_root/.env" ] && [ ! -f .env ]; then \ cp "$$main_root/.env" .env && echo "bootstrap: copied .env from $$main_root"; \ From 25b89a6740ab87954dee7c779b52b8464998cd9d Mon Sep 17 00:00:00 2001 From: mateo-berri <277851410+mateo-berri@users.noreply.github.com> Date: Sat, 1 Aug 2026 15:42:09 -0700 Subject: [PATCH 2/2] build(makefile): swap npm ci for npm install so bootstrap no-ops on unchanged ui deps --- Makefile | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 52105e76e7e..a6ea857de03 100644 --- a/Makefile +++ b/Makefile @@ -75,14 +75,7 @@ install-dev: bootstrap: $(UV) sync --inexact --frozen --extra proxy --group proxy-dev --group e2e-dev $(UV_RUN) python scripts/prisma_generate_if_needed.py - @cd ui/litellm-dashboard && \ - dep_hash=$$(git hash-object package.json package-lock.json); \ - stamp=node_modules/.bootstrap-stamp; \ - if [ "$$(cat "$$stamp" 2>/dev/null)" = "$$dep_hash" ]; then \ - echo "bootstrap: ui deps up to date, skipping npm ci"; \ - else \ - npm ci --no-audit --no-fund && echo "$$dep_hash" > "$$stamp"; \ - fi + cd ui/litellm-dashboard && npm install --no-audit --no-fund @main_root=$$(git worktree list --porcelain | head -1 | sed 's/^worktree //'); \ if [ "$$main_root" != "$$(git rev-parse --show-toplevel)" ] && [ -f "$$main_root/.env" ] && [ ! -f .env ]; then \ cp "$$main_root/.env" .env && echo "bootstrap: copied .env from $$main_root"; \