pnpm 工作区:* 依赖项

Mat*_*ker 9 node.js dockerfile pnpm

我在 Docker Conatiner 内安装部分 pnpm monorepo 时遇到严重问题。\n问题是docker build在某些devDependencies甚至不应该安装的地方失败。

\n
  "devDependencies": {\n    "@types/node": "17.0.12",\n    "@types/ssh2-sftp-client": "7.0.0",\n    "dotenv": "14.3.2",\n    "eslint": "8.7.0",\n    "ts-node": "10.4.0",\n    "typescript": "4.5.5",\n    "@tts-tmc/eslint-config-typescript": "workspace:*",\n    "@tts-tmc/ts-config": "workspace:*"\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
FROM node:14-alpine\nARG GITHUB_NPM_REGISTRY_TOKEN\n\nRUN npm i -g pnpm\nRUN mkdir -p /usr/app\n# pnpm fetch does require only lockfile\nCOPY package.json bin/pnpm-lock.yaml /usr/app/\nCOPY bin/.npmrc /usr/app/.npmrc\nWORKDIR /usr/app\nRUN pnpm install -r --offline --prod\n
Run Code Online (Sandbox Code Playgroud)\n

但即使如此--prod安装了依赖项,docker 也无法正确构建,因为出现以下错误

\n

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

\n

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

\n

问候\n马蒂亚斯

\n

Zol*_*han 0

尝试为您的项目生成专用的锁定文件。安装@pnpm/make-dedicated-lockfilemake-dedicated-lockfile/usr/app.