我有一系列的Typescript项目(每个都是一个实际的可编译目标,有自己的tsconfig.json).它们是一个代码存储库中的兄弟目录,如下所示:
myrepo
--/common
--/project1
--/project2
Run Code Online (Sandbox Code Playgroud)
为了在project1和之间共享代码project2,我打破了一些共享代码common.我想允许project1和project2编码从中导入类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中的子项目?
我也必须处理类似的结构,但找不到理想的方法。
我设法想出的最好办法是lib在其中包含一个目录project1,project2其中包含编译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。
| 归档时间: |
|
| 查看次数: |
471 次 |
| 最近记录: |