From aa84b738b6eaeb00689d4d0952c5904cece57137 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 29 Apr 2026 05:25:18 +0100 Subject: [PATCH] fix(docker): copy postinstall helper imports --- Dockerfile | 1 + src/dockerfile.test.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/Dockerfile b/Dockerfile index 3de3e56af9d..68856898568 100644 --- a/Dockerfile +++ b/Dockerfile @@ -63,6 +63,7 @@ COPY openclaw.mjs ./ COPY ui/package.json ./ui/package.json COPY patches ./patches COPY scripts/postinstall-bundled-plugins.mjs scripts/preinstall-package-manager-warning.mjs scripts/npm-runner.mjs scripts/windows-cmd-helpers.mjs ./scripts/ +COPY scripts/lib/package-dist-imports.mjs ./scripts/lib/package-dist-imports.mjs COPY --from=ext-deps /out/ ./${OPENCLAW_BUNDLED_PLUGIN_DIR}/ diff --git a/src/dockerfile.test.ts b/src/dockerfile.test.ts index d6854120fa4..751d29303f0 100644 --- a/src/dockerfile.test.ts +++ b/src/dockerfile.test.ts @@ -74,6 +74,20 @@ describe("Dockerfile", () => { ); }); + it("copies postinstall helper imports before pnpm install", async () => { + const dockerfile = await readFile(dockerfilePath, "utf8"); + const installIndex = dockerfile.indexOf("pnpm install --frozen-lockfile"); + const postinstallIndex = dockerfile.indexOf("COPY scripts/postinstall-bundled-plugins.mjs"); + const distImportHelperIndex = dockerfile.indexOf( + "COPY scripts/lib/package-dist-imports.mjs ./scripts/lib/package-dist-imports.mjs", + ); + + expect(postinstallIndex).toBeGreaterThan(-1); + expect(distImportHelperIndex).toBeGreaterThan(-1); + expect(postinstallIndex).toBeLessThan(installIndex); + expect(distImportHelperIndex).toBeLessThan(installIndex); + }); + it("prunes runtime dependencies after the build stage", async () => { const dockerfile = await readFile(dockerfilePath, "utf8"); expect(dockerfile).toContain("FROM build AS runtime-assets");