gpt4 book ai didi

typescript - Typescript 项目之间的依赖关系(在一个 repo 内)

转载 作者:搜寻专家 更新时间:2023-10-30 20:32:30 25 4
gpt4 key购买 nike

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

myrepo
--/common
--/project1
--/project2

为了在 project1project2 之间共享代码,我将一些共享代码分解为 common。我想允许 project1project2 代码从 common 导入类,但不能从彼此(和 common 不应该能够从其他两个导入类)。

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

import {CommonClass} from 'common/commonclass';

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

  "baseUrl":".",
"paths":{
"*":["*","../*"]
}

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

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

最佳答案

我也不得不处理类似的结构,但找不到理想的方法。
我想出的最好办法是在 project1project2 中有一个 lib 目录,其中包含已编译的 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"));
});

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

关于typescript - Typescript 项目之间的依赖关系(在一个 repo 内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41253134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com