将所有TypeScript文件透明到相对的相邻目录

时间:2017-06-17 18:34:56

标签: javascript bash typescript typescript2.0 tsc

我正在使用TypeScript编写基于JavaScript的测试。

我想要一个File file=new File(getFilesDir() + "ShoppingList.ur"); try{ FileOutputStream fileOutputStream =new FileOutputStream(file); ObjectOutputStream data=new ObjectOutputStream(fileOutputStream); data.writeObject(toShare); data.close(); fileOutputStream.close(); }catch(IOException e){ e.printStackTrace(); } uriToSend=Uri.fromFile(file); Intent shareIntent=new Intent(Intent.ACTION_SENDTO); shareIntent.addCategory("*/*"); shareIntent.putExtra(Intent.EXTRA_STREAM,uriToSend); startActivity(Intent.createChooser(shareIntent,getString(R.string.sendTo))); file.delete(); 命令,以便能够正确处理所有文件的转换,这是关键部分。我认为使用多个tsconfig.json文件是这里的方法。

我有这个结构:

tsc --watch

我想将TypeScript文件放在src目录中,并将它们转换为目标目录。

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

,例如,输入文件:

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

所需的输出文件:

/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 命令是否有办法将这些文件转换为一行一行命令到各自的目标目录?

我认为这可能非常棘手。我可能不得不按照他们的名字对它们进行分组,并分别对每个组进行分析。那会更难。

2 个答案:

答案 0 :(得分:1)

我认为您不能让原生tsc --watch支持该项目结构,但您可以使用gulpgulp-typescript。它们允许您在几个不同的TypeScript项目上设置同步监视,每个项目都有自己的 tsconfig.json

如果这些子目录之间存在依赖关系,请考虑使用lerna。否则,您可能会在目标目录中找到令人惊讶的布局。额外级别的目录是最初的问题让我对此进行了研究。使用lerna,您将设置单独的 package.json 文件,这些文件记录了依赖项。然后lerna bootstrap可以负责设置符号链接以解析引用。

使用lerna,您可能希望将某些 package.json 文件标记为"private": true,如果它们不打算发布到npm。

答案 1 :(得分:0)

我创建了一个工具来执行此操作:

github.com/ORESoftware/tsc-multi-watch

它将在您的项目中搜索/tsconfig.*\.json/个文件,并为每个文件生成一个tsc -w进程。

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

当将tsc -w文件添加到项目中时,

tsc-multi-watch将重新启动正确的.ts进程。