From c633200e86907d1102239d95c83b0d6688ea6736 Mon Sep 17 00:00:00 2001 From: Maieul BOYER Date: Sun, 3 Aug 2025 15:10:13 +0200 Subject: [PATCH] feat(infra): Removed alpine/jq dependencies Changed from using `jq` to a nodejs script to merge package.json files --- src/@shared/scripts/merge.js | 23 +++++++++++++++++++++++ src/Dockerfile | 14 ++++++-------- 2 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 src/@shared/scripts/merge.js diff --git a/src/@shared/scripts/merge.js b/src/@shared/scripts/merge.js new file mode 100644 index 0000000..5eec55e --- /dev/null +++ b/src/@shared/scripts/merge.js @@ -0,0 +1,23 @@ +#!/usr/bin/env node + +import fs from 'node:fs/promises' + +const merge_json = (prev, cur) => { + const keys = ["dependencies", "devDependencies"]; + const out = {}; + + for (let k of keys) + out[k] = Object.assign(prev[k] ?? {}, cur[k] ?? {}); + return out; +}; + +const promises = process.argv.slice(2).map(f => fs.readFile(f, { encoding: "utf8" })); +const jsons = (await Promise.all(promises)).map(JSON.parse); +const deps = jsons.reduce(merge_json, {}); + +const out = Object.assign(deps, { + private: true, + name: "stub", +}); + +console.log(JSON.stringify(out)); diff --git a/src/Dockerfile b/src/Dockerfile index fb39642..732b80c 100644 --- a/src/Dockerfile +++ b/src/Dockerfile @@ -1,6 +1,5 @@ -FROM guergeiro/pnpm:22-10-alpine as builder +FROM guergeiro/pnpm:22-10-slim as builder -RUN apk add jq; ARG SERVICE WORKDIR /build @@ -15,14 +14,13 @@ RUN pnpm install; COPY ./@shared/ /build/@shared/ COPY ./${SERVICE}/ /build/service/ -RUN cd /build/service && \ - pnpm run build:prod && \ - jq -s '.[0] * .[1]' /build/*/package.json >/dist/package.json && \ - cp /build/pnpm-workspace.yaml /dist/pnpm-workspace.yaml && \ - true; +RUN cd /build/service && \ + pnpm run build:prod && \ + node /build/@shared/scripts/merge.js /build/*/package.json >/dist/package.json && \ + cp /build/pnpm-workspace.yaml /dist/pnpm-workspace.yaml; -FROM guergeiro/pnpm:22-10-slim +FROM guergeiro/pnpm:22-10-alpine WORKDIR /src