What would be an idiomatic directory structure for a TypeScript project?
I would like the following features in such a structure:
答案 0 :(得分:11)
我建议生成单文件输出。无论是浏览器还是Node,它只是一个更好的主意。请记住,大多数IDE都可以隐藏.gitignore
个文件,因此即使您让.js
文件存在,整洁的文件窗格也不应该成为问题在他们的.ts
文件旁边。
您 可以在技术上使用--outDir
通过适当设置tsconfig.json
来输出您想要的方式。
这是相当微不足道的!只需保持/tests
。导入只是通过目录遍历工作,如import {MyClass} from "../src/modules/my-class"
(../
将离开/tests
)。
这在浏览器中比在Node上更具挑战性 - 后者的require
开箱即用于TypeScript。
强烈建议你使用像webpack
这样的东西,但是如果你坚持危险的生活,这是一个浏览器友好的要求,我用它来快速迭代TypeScript代码,而无需构建过程设置
由于绝对路径是处理Web导入所必需的,因此以下是使用TypeScript require()
hack的方法(通常用于不需要重建的快速调试会话)。
/entities/user.ts
import {Username} from "../entities/username";
import {Password} from "../entities/password";
export class User {
username: Username;
password: Password;
}
其中Username
和Password
分别是export
和/entities/username.ts
中的/entities/password.ts
个。{/ p>
虽然../entities/
可能看起来无关紧要,但请注意,浏览器必须拥有与Username
和Password
实体相应的绝对路径。 :)
答案 1 :(得分:5)
看起来我做错了。我正在尝试以下结构:
src
|---- lib
|-----|---- mymodule.ts
|---- tests
|-----|---- mymodule.tests.ts
但是,我试图将lib
目录下的源代码与tests
下的测试代码分开编译。
find src/lib -name *.ts | xargs tsc --declaration --sourceMap --module commonjs --target es5 --listFiles --outDir lib
然后是测试代码:
find src/tests -name *.ts | xargs tsc --declaration --sourceMap --module commonjs --target es5 --listFiles --outDir tests
这导致tests
文件夹具有另一个lib
子目录和tests
子目录。这不是我想要的。
要解决我的问题,我需要将它们一起编译,所以现在我的命令是:
find src -name *.ts | xargs tsc --declaration --sourceMap --module commonjs --target es5 --listFiles --outDir .
感谢大家的帮助。
答案 2 :(得分:3)
很难提出任何具体的建议,因为这在很大程度上取决于项目规模,工具,平台等。