nodejs / docker-node

Official Docker Image for Node.js :whale: :turtle: :rocket:
https://hub.docker.com/_/node/
MIT License
8.13k stars 1.95k forks source link

node:20.13 breaks building with workspaces from root #2081

Open tharvik opened 1 month ago

tharvik commented 1 month ago

Environment

Expected Behavior

Building a workspace aware project without changing workdir.

Current Behavior

npm fails stating that it can't find any workspace: "ERR! No workspaces found!"

Possible Solution

setting WORKDIR to another dir than / before running npm fixes it. also using node:20.12 instead of node:20 (or node:20.13) fixes it.

Steps to Reproduce

FROM node:20.13

RUN echo '{ "name": "root", "workspaces": ["pkg"] }' > package.json
RUN mkdir -p pkg/
RUN echo '{ "name": "pkg" }' > pkg/package.json
RUN npm -ws pkg get name # random workspace aware cmd
LaurentGoderre commented 1 month ago

Leaving the workdir undefined is the preferred behavior because it's an image that is used as a base for other images. The workdir can easily be set either in a dependent image or at runtime.

tharvik commented 1 month ago

indeed, working around it is quite easy. but I don't see documentation on actively setting the workdir when deriving an image. and it was working in the previous minor version so I see it as a regression on a LTS image, which might break a bunch of setup (it broke mine at least).

LaurentGoderre commented 1 month ago

It might be a change of behavior in npm that causes this to change within a major version.