pnpm工作区:*依赖项



我在Docker Conatiner中安装部分pnpm monoreo时遇到严重问题。问题是docker build在某些甚至不应该安装的devDependencies上出现故障。

"devDependencies": {
"@types/node": "17.0.12",
"@types/ssh2-sftp-client": "7.0.0",
"dotenv": "14.3.2",
"eslint": "8.7.0",
"ts-node": "10.4.0",
"typescript": "4.5.5",
"@tts-tmc/eslint-config-typescript": "workspace:*",
"@tts-tmc/ts-config": "workspace:*"
}

在我的Dockerfile中,我使用fetch获取所有依赖项

FROM node:14-alpine
ARG GITHUB_NPM_REGISTRY_TOKEN
RUN npm i -g pnpm
RUN mkdir -p /usr/app
# pnpm fetch does require only lockfile
COPY package.json bin/pnpm-lock.yaml /usr/app/
COPY bin/.npmrc /usr/app/.npmrc
WORKDIR /usr/app
RUN pnpm install -r --offline --prod

但是,即使只安装了--prod依赖项,docker也无法正确构建,这是由于以下错误

ERR_PNPM_NO_MATCHING_VERSION_INSIDE_WORKSPACE  In : No matching version found for @tts-tmc/eslint-config-typescript@* inside the workspace

那么,有没有一种标准的方法来解决这个问题呢?或者我必须修改package.json吗?如果是,你如何获得正确的版本?我以为是锁定文件?应该足以安装所有依赖项。

问候Mathias

yarn转换到pnpm时出现相同错误!只需添加pnpm-workspace.yaml并添加以下内容即可解决此问题:

packages:
- "apps/*"
- "packages/*"

希望能有所帮助!

尝试为您的项目生成一个专用的锁定文件。安装@pnpm/make专用锁定文件并在/usr/app中运行make-dedicated-lockfile

作为Monoreto项目,您是否也分发了包。json在包之外的其他地方。json在根COPY package.json bin/pnpm lock. yaml/usr/app/下可以在一般项目中进行优化,但在Monorpo项目中,它可能会因为工作区的package.json文件的丢失而丢失

最新更新