如何在由打字稿

时间:2019-08-12 18:31:06

标签: javascript typescript whitespace

我希望从打字稿生成的javascript代码具有相同的白色间距。长话短说,我们正在从js迁移到ts,并保持空白将使我们能够将生成的代码与未迁移的代码版本进行比较。

我的输入ts如下:

id = this.getOrCreate(
    entity.uuid,
    dao.wrap(utils.trimProxyPrefix(entity.name)),
    dao.wrap(entity.type),
    dao.wrap(entity.targetName),
    dao.wrap(entity.targetType),
    dao.wrap(entity.targetIp),
    dao.wrap(host),
    dao.wrap(version),
    dao.wrap(status)
);  

输出看起来很丑陋,很长:

id = this.getOrCreate(entity.uuid, dao.wrap(utils.trimProxyPrefix(entity.name)), dao.wrap(entity.type), dao.wrap(entity.targetName), dao.wrap(entity.targetType), dao.wrap(entity.targetIp), dao.wrap(host), dao.wrap(version), dao.wrap(status));  

我的预期输出是:

id = this.getOrCreate(
    entity.uuid,
    dao.wrap(utils.trimProxyPrefix(entity.name)),
    dao.wrap(entity.type),
    dao.wrap(entity.targetName),
    dao.wrap(entity.targetType),
    dao.wrap(entity.targetIp),
    dao.wrap(host),
    dao.wrap(version),
    dao.wrap(status)
); 

我的tsconfig如下:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "outDir": "./dist",
  },
  "include": ["./src/**/*"],
  "exclude": [
    "node_modules",
    "./src/real/*"
  ]
}

2 个答案:

答案 0 :(得分:1)

根据tsconfig.json的配置,已编译的TypeScript代码可能会有很大的不同,因此在编译器中保留空格实际上不是一个选择。

您可以做的一件事是,首先通过Prettier之类的格式化程序运行源,然后在编译后再次运行它(prettier --write **/*.ts应该可以解决问题)。那应该最小化您在源代码和目标代码之间看到的差异。

答案 1 :(得分:0)

我最终使用了漂亮的样式,并且在迁移到ts和从ts生成的js代码之前也删除了空行,然后对rbcommons发表了评论,比较了“清理过的”代码。

有关更漂亮的信息,请参见Oleg的答案https://stackoverflow.com/a/57470670/1810962

要删除空白行,我使用了一些bash:

for i in `ls`; do  sed -i .bak  '/^[[:space:]]*$/d'  $i ; done