2

我已经意识到,当我在具有特定依赖项的项目上运行 tsc 时,只要在我的系统中节点的模块解析路径中的任何位置存在任何版本的依赖项,编译就会成功。

例如:

  • 在使用包含两个包(project_1project_2)的 yarn 工作区管理的 monorepo
  • 如果project_1在其 package.json中声明了依赖dep_1
  • 运行 yarn install 后,将dep_1添加到根 node_modules

我现在可以在project_2中对dep_1使用 import 语句,而无需将dep_1添加到project_2的 package.json 中,并且 tsc 在编译时不会抱怨。

可以更改此行为以使 Typescript 了解每个项目的 package.json 中声明的依赖项吗?

4

2 回答 2

4

这是吊装包裹的固有问题,也是周围许多包裹被搞砸的原因。尽管如此,TSLint 提供了no-implicit-dependencies防止导入未列为直接依赖项的提升包的规则。

于 2019-01-06T12:19:48.000 回答
0

请注意,这并非特定于 TypeScript。你可以从纯 JavaScript 做同样的事情。这是吊装固有的。

于 2020-07-17T05:28:32.360 回答