javascript - 将所有 TypeScript 文件转译到相对相邻的目录

标签 javascript bash typescript typescript2.0 tsc

我正在使用 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 来支持该项目结构,但您可以使用 gulpgulp-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/

相关文章:

angular - Angular 5路由中的queryParams列表为空

javascript - 在 anchor 内对齐 div

javascript - 全局 JS 变量的令人困惑的未捕获引用错误

macos - 在 Mac OS X 上的 bash 中更改 $IFS

linux - 如何设置用户的权限,以便它可以执行 bash 脚本来读取其他用户的文件?

typescript - 输入gapi.savetoandroidpay

Javascript 使用突变观察器阻止多个脚本不起作用

javascript - wix - onClick() 按钮颜色更改

bash - 如何访问 Windows Bash 中的资源使用

reactjs - React - 可重用的 Redux hook 切片问题(Redux Toolkit、Typescript)