node:20.13 breaks building with workspaces from root
Environment
- Platform: GNU/Linux
- Docker Version: 24.0.5, build ced0996600
- Node.js Version: 20.13
- Image Tag: 20.13
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
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.
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).
It might be a change of behavior in npm that causes this to change within a major version.