gpt4 book ai didi

typescript - 在 Yarn Workspace 的不同包中使用不同版本的依赖项

转载 作者:行者123 更新时间:2023-12-04 12:00:57 29 4
gpt4 key购买 nike

我对使用 Yarn Workspaces 和设置 Monorepo 还比较陌生,所以如果有人回答了这个问题,请原谅我。我不相信我已经找到了关于使用 Yarn Workspaces 设置 Monorepo 是否可行的明确答案。

我想知道是否可以在不同的包中使用两个不同版本的依赖项(在我的情况下是 TypeScript)以及如何做到这一点。

我的目标是在包 A 中锁定一个版本的 TypeScript (3.4.5) 并使用根 package.json此 monorepo 中所有其他包的 TypeScript 版本 (3.5.0)。

这是文件夹结构。理想情况下,PackageA 将使用 3.4.5,PackageB/PackageC 将使用在根 package.json 中定义的任何版本。

|-- packages
|-- packageA
|-- packageB
|-- packageC
|-- package.json

这是我迄今为止尝试过的:

我试过添加 nohoist在 webpack 配置的我的工作区选项中,但我不相信包 A 正在使用 TypeScript 3.4.5,因为我没有得到预期的结果。当我更改根时 package.json TypeScript 版本要求为 3.4.5,那是当我得到正确结果时,如果我可以继续对所有其他包使用最新的 TS 而对包 A 保留较低版本,那将是最好的情况。

我也试过添加 package.json在 PackageA 文件夹中,它定义了 "typescript": "3.4.5"作为 devDependency . Yarn 在 PackageA 文件夹中安装了正确的版本,但它似乎没有使用它。

我也很确定 Yarn resolutions不是这种情况的正确工具,因为我的包没有在我的 package.json 中定义为依赖项.
snippet of package.json
"devDependenices: {
...,
"webpack": "^4.34.0",
"typescript": "3.5.0-rc",
"yarn": "^1.15.2"
},
"workspaces": {
"packages": [
"packages/*"
],
"nohoist": [
"packageA/typescript"
]
}

如果有人好奇,PackageA 需要使用 TypeScript 3.4.5,因为我需要 react-docgen-typescript解析 Prop 上存在的 Prop 值,而不是它的父级(即按钮上的 HTML 属性将显示为 prop)。这是一个 link到那个问题。

如果我的项目配置需要更多信息,请告诉我!欣赏洞察力和建议:)

最佳答案

根据文档,您必须添加 **在包裹名称旁边,以避免吊起包裹。文档链接 here .
仅避免提升 typescript :

"workspaces": {
"packages": [
"packages/*"
],
"nohoist": [
"packageA/typescript/**"
]
}
为了避免提升 typescript 及其依赖项:
"workspaces": {
"packages": [
"packages/*"
],
"nohoist": [
"packageA/typescript/**/**"
]
}

关于typescript - 在 Yarn Workspace 的不同包中使用不同版本的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56944265/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com