我在 Docker Conatiner 内安装部分 pnpm monorepo 时遇到严重问题。\n问题是docker build在某些devDependencies甚至不应该安装的地方失败。
"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 }\nRun Code Online (Sandbox Code Playgroud)\n在我的Dockerfile,我使用 fetch 来获取所有依赖项
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\nRun Code Online (Sandbox Code Playgroud)\n但即使如此--prod安装了依赖项,docker 也无法正确构建,因为出现以下错误
ERR_PNPM_NO_MATCHING_VERSION_INSIDE_WORKSPACE\xe2\x80\x89 In : No matching version found for …
我想为我的插件扩展设置属性映射。所以基本上我想写一些类似的东西
settings {
envVars = {
a = "abc"
b = "dec"
...
n = "sdf"
}
}
Run Code Online (Sandbox Code Playgroud)
当我在扩展类中使用属性时
private Map<?,?> envVars;
Run Code Online (Sandbox Code Playgroud)
Gradle 告诉我它无法设置属性设置。所以我想实现的是在我的扩展类中设置值映射。
我所做的就是当我写下以下内容时得到关闭:
settings {
envVars {
a = "abc"
b = "dec"
...
n = "sdf"
}
}
public class extension {
....
public envVars(Closure c){}
}
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何处理闭包以及如何访问里面的内容,所以我宁愿有一个 Map 而不是闭包
问候马蒂亚斯