纱线是否为依赖项的依赖项固定特定版本?

Does yarn pin specific versions for dependencies of dependencies?

假设我们有一个依赖项 X,它本身有一个依赖项 Y。X 不使用纱线,也不固定 Y 的特定版本(即 X 的 package.json 有 "Y": "^1.0.0")。 yarn 是否允许我们固定和使用特定版本的传递依赖 Y?

更多背景信息: 在我们的 package.json 中,我们固定了依赖项 X 的版本。但是依赖项 X 有一个未固定的依赖项 Y(例如 "Y": "^1.0.0"),它导出一些 .d.ts 文件。 Y 的新版本问世,它使用了一些新的 Typescript 功能,这突然破坏了我们在 package.json 中使用的 Typescript 版本的 tsc 编译。我们无法在 package.json 中固定 Y 的版本,所以这个问题是不可避免的。

是的,Yarn 固定了整个依赖树,并保证了确定性——只要你们使用相同版本的纱。参见 https://yarnpkg.com/blog/2017/05/31/determinism/