我正在使用 TypeScript 编写基于 JavaScript 的测试。
我想要一个 tsc --watch
命令,以便能够正确处理所有文件的转译,这是关键部分。我认为使用多个 tsconfig.json 文件是正确的方法。
我有这样的结构:
/tests
/e2e
tsconfig.json
/src
/target
/unit
tsconfig.json
/src
/target
我想将 TypeScript 文件放在 src 目录中,然后将它们转译到目标目录中。
我的问题是 - 如果您有一个可以将文件列表作为输入的 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
命令获取这些文件并通过一行命令将它们全部转译到各自的目标目录?
我认为这可能很难做到。我可能必须按目录名对它们进行分组,并分别转译每个组。那会困难得多。
最佳答案
我认为您无法获得 native tsc --watch
来支持该项目结构,但您可以使用 gulp和 gulp-typescript 。它们允许您在多个不同的 TypeScript 项目上设置同时监视,每个项目都有自己的 tsconfig.json。
如果这些子目录之间存在依赖关系,请考虑使用 lerna以及。否则,您的目标目录中可能会出现令人惊讶的布局。额外的目录级别是最初的问题,这让我开始研究这个问题。使用 lerna
,您将设置单独的 package.json 文件来记录依赖项。然后 lerna bootstrap 可以负责设置符号链接(symbolic link)来解析引用。
使用 lerna
,您可能希望将某些 package.json 文件标记为 "private": true
(如果它们不是)打算发布到 npm。
关于javascript - 将所有 TypeScript 文件转译到相对相邻的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44608091/