我正在做一个项目,我想将我的源代码打包到多个模块中(在不同的文件中)。我这样做是为了在某些页面上只包含某些部分以减少整体重量。
我遇到的问题是我无法弄清楚可以让我为外部模块起别名的语法,而且我真的不想每次都写出完整的模块(因为它通常类似于 ABCD 用于组织)。
当我编译时,我有一个抓取所有文件的脚本,所以我将外部定义文件作为第一个参数。
如果我写出整个模块(A.B.C.D.MyClass)
,它会识别出来。如果我尝试这样做:
module MyModule {
import ABCD = A.B.C.D;
export MyClass {
//...
public myFunc(obj:ABCD.MyClass) {}
}
}
它会告诉我'The name "ABCD" does not exist in the current scope."'
如果重要,我会导出我的所有类,但不导出任何模块。我生成了包含的定义文件(所以在我编译时,包含 ABCD 的定义文件在我的列表中是第一个)。
有任何想法吗?
更新
为了详细说明我的文件结构,我有这样的事情:
- 一个
- 乙
- a.ts
- b.ts
- C
- c.ts
- d.ts
- 乙
然后在其他地方我也可能有:
- 一个
- D
- 等
- f.ts
- 乙
- g.ts
- h.ts
- D
在这种情况下,我会将第一组构建成类似于 ABts 的东西,方法是使用以下内容编译它们:
tsc A/B/a.ts A/B/b.ts A/B/C/c.ts A/B/C/d.ts --out A.B.ts --declarations
然后,当我去打包下一个时,我会做类似的事情:
tsc /path/to/A.B.d.ts A/D/e.ts A/D/f.ts A/D/E/g.ts A/D/E/h.ts --out A.D.ts --declarations
我通过递归一组我指定的文件来动态构建这些编译器命令,以便它获取那些编译器的东西。