Typescript项目之间的依赖关系(在一个回购中)

Ben*_*lts 14 typescript

我有一系列的Typescript项目(每个都是一个实际的可编译目标,有自己的tsconfig.json).它们是一个代码存储库中的兄弟目录,如下所示:

myrepo
--/common
--/project1
--/project2
Run Code Online (Sandbox Code Playgroud)

为了在project1和之间共享代码project2,我打破了一些共享代码common.我想允许project1project2编码从中导入类common,但不能从彼此common导入(并且不应该从其他两个中导入类).

理想情况下,代码project1可能如下所示:

import {CommonClass} from 'common/commonclass';
Run Code Online (Sandbox Code Playgroud)

我找到了一种方法,允许导入正常工作,将其放入tsconfig.json project1:

  "baseUrl":".",
  "paths":{
    "*":["*","../*"]
  }
Run Code Online (Sandbox Code Playgroud)

但是,我还没有找到一种方法来限制哪些其他子项目可以成为一个主题import.我尝试过使用rootDirs,希望它能以同样的方式限制允许的源文件rootDir,但实际上并没有.

我怎样才能将每个项目中可导入的代码列入白名单?或者是否有一些更好的方法来构建我不知道的Typescript中的子项目?

Nit*_*mer 2

我也必须处理类似的结构,但找不到理想的方法。
我设法想出的最好办法是lib在其中包含一个目录project1project2其中包含编译common后的定义文件。

我使用 gulp 将项目构建common到不同的projectX/lib目录中:

gulp.task("common-project1", function () {
    var tsProject = ts.createProject("common/tsconfig.json");

    return tsProject.src("common/**/*.ts")
        .pipe(tsProject())
        .pipe(gulp.dest("project1/lib/common"));
});
Run Code Online (Sandbox Code Playgroud)

这不是最好的解决方案,因为它要求您每次更改common源时都运行这个 gulp 任务,但我发现一旦足够稳定,这种情况就不会经常发生common