Typescript项目引用公共依赖项引用

Typescript项目引用公共依赖项引用,typescript,monorepo,Typescript,Monorepo,这基本上是我的重新发布,以防繁忙的维护人员无法发表评论 关于如何正确有效地使用Typescript项目引用,尤其是在monorepo场景中,web上似乎仍然存在很多困惑。我正试图为自己组装这样一个原型,但在构建工作中遇到了一些问题 我认为@RyanCavanaugh的例子是最好的参考。我惊讶地发现,通过简单地添加一个共享引用,我就得到了构建错误。也许我只是犯了一个愚蠢的错误/疏忽 我从他的zoo示例开始,它有来自zoo->animals->core的引用,我只是直接从zoo->core添加了一个

这基本上是我的重新发布,以防繁忙的维护人员无法发表评论

关于如何正确有效地使用Typescript项目引用,尤其是在monorepo场景中,web上似乎仍然存在很多困惑。我正试图为自己组装这样一个原型,但在构建工作中遇到了一些问题

我认为@RyanCavanaugh的例子是最好的参考。我惊讶地发现,通过简单地添加一个共享引用,我就得到了构建错误。也许我只是犯了一个愚蠢的错误/疏忽

我从他的zoo示例开始,它有来自zoo->animals->core的引用,我只是直接从zoo->core添加了一个引用。但是,
npm build
会产生许多错误,首先是:

animals/index.ts:1:20 - error TS6059: File 'C:/code/project-references-demo/animals/animal.ts' is not under 'rootDir' 'C:/code/project-references-demo/zoo'. 'rootDir' is expected to contain all source files.

| import Animal from './animal';
我错过了什么

屏幕截图的修复:

{
  "extends": "../tsconfig-base.json",
  "compilerOptions": {
    "outDir": "../lib/zoo",
    "rootDir": "."
  },
  "references": [
    {
      "path": "../animals",
      
    },
    {
      "path": "../core"
    }
  ]
}

出现错误的原因是您在导入和退出项目文件夹时使用了不必要的点,尝试减少点:从“动物”导入{Dog,createDog}。如果文件名为index.ts,则“index”也不必要。您的意思是什么?而且我还看到tsconfig.json中没有文件名,请在tsconfig.json中写入您的新文件:core.ts没有新文件。对于这样一个简单的加法(没有成比例的理由),预计不会有剧烈的变化。这是一个工作示例的简单扩展。我无法复制您的成功,我也不明白为什么这些更改会修复它。您是否有相同的错误?tsconfig-base.json只是ts配置的一部分,因此需要扩展tsconfig.json。此外,我无法复制您的失败,如果需要,我可以将我的版本放在github中