2017-06-17 50 views
1

我正在使用TypeScript编写基于JavaScript的测试。将所有TypeScript文件转储到相对相邻的目录

我想要一个单一的tsc --watch命令,以便能够正确处理我们所有文件的传输,这是关键部分。我认为使用多个tsconfig.json文件是这里的方法。

我有这样的结构:

/tests 
    /e2e 
    tsconfig.json 
    /src 
    /target 
    /unit 
    tsconfig.json 
    /src 
    /target 

我想把打字稿文件在src目录,并把它们transpile到目标目录。

我的问题是 - 如果你有一个bash脚本可以将文件列表作为输入,那么你如何将这些文件转换成它们各自的目标目录?

例如,输入文件:

/home/you/projects/x/test/e2e/src/a.ts 
/home/you/projects/x/test/e2e/src/b.ts 
/home/you/projects/x/test/e2e/src/c.ts 
/home/you/projects/x/test/unit/src/foo.ts 
/home/you/projects/x/test/unit/src/bar.ts 
/home/you/projects/x/test/unit/src/baz.ts 

所需的输出文件:

/home/you/projects/x/test/e2e/target/a.js 
/home/you/projects/x/test/e2e/target/b.js 
/home/you/projects/x/test/e2e/target/c.js 
/home/you/projects/x/test/unit/target/foo.js 
/home/you/projects/x/test/unit/target/bar.js 
/home/you/projects/x/test/unit/target/baz.js 

有没有为tsc命令把这些文件和transpile他们都在一个一个的方式一行命令到它们各自的目标目录?

我认为这可能非常棘手。我可能不得不按照他们的dirname将他们分组,并分别将每个小组分组。这会更困难。

+0

你是如何处理它们的? – 123

+0

有一个tsc的目标目录选项,只需要这样做,你可以在tsconfig.json中设置它: -/ – toskv

+0

在tsconfig.json中的outDir是你正在寻找的人 –

回答

1

我不认为你可以得到原生tsc --watch来支持该项目结构,但你可以使用gulpgulp-typescript。它们允许您在几个不同的TypeScript项目上同时设置手表,每个项目都有自己的tsconfig.json

如果这些子目录之间存在依赖关系,请考虑使用lerna。否则,您可能会在目标目录中出现令人惊讶的布局。一个额外的目录是最初的问题,让我看着这个。使用lerna,您将设置单独的package.json记录依赖关系的文件。然后lerna bootstrap可以负责设置符号链接来解析引用。

随着lerna,你可能要标记一些的package.json文件为"private": true,如果他们不打算发布到NPM。

+0

谢谢,我可能最终会写一些基本上为每个tsconfig.json文件产生一个“tsc -w”的东西。 –

0

我创建了一个工具来做到这一点:

github.com/ORESoftware/tsc-multi-watch

它会搜索你的项目/tsconfig.*\.json/文件,并生成一个TSC -w过程每一个。

不仅如此,它还解决了tsc - watch的另一个缺陷。 tsc --watch无法解释添加到项目中的新文件。

.ts文件添加到项目中时,tsc-multi-watch将重新启动正确的tsc -w过程。

相关问题