TypeScript生成的JS文件编码

时间:2015-11-15 17:50:15

标签: encoding typescript visual-studio-2015

我正在使用VS2015和最新的TypeScript(1.6.3)。生成的JavaScript和映射文件以Windows-1252编码生成。源TypeScript文件是带有BOM的UTF-8。 我确实需要生成的文件是带有BOM的UTF-8,以便通过Windows Store认证。

一旦我手动修复生成的文件的编码,就可以了。但是我必须在源代码管理中包含生成的文件并修复任何新添加的文件。

似乎没有任何设置可以更改编码。 这是编译器中的错误吗?

项目类型为jsproj,根据https://github.com/Microsoft/TypeScript/issues/3124

,它似乎不支持tsconfig.json

2 个答案:

答案 0 :(得分:6)

  

一旦我手动修复生成的文件的编码,就可以了。但是我必须在源代码管理中包含生成的文件并修复任何新添加的文件。

使用tsconfig.json中的emitBOMcharset选项:

{
    "compileOnSave": true,
    "compilerOptions": {

        //... other stuff

        "emitBOM": true,
        "charset": "utf8"
    },
    // ...
}

参见架构:http://json.schemastore.org/tsconfig

答案 1 :(得分:0)

不幸的是,VS2015在其当前状态下并不完全支持TypeScript(如果将来更改,将更新此答案)。

在某些项目类型中,您可以使用tsconfig.json,然后编译器将使用配置。为此,您需要编辑项目文件,并将指定了TypeScriptModuleKindamd的元素commonjs添加到配置文件的属性组中。

如果您的项目类型是例如jsproj,则目前无法使用配置文件。那么你必须要Gulp / Grunt或者只是简单地从命令行手动调用tsc。或者,您可以运行Powershell脚本来修复编码:

(Get-ChildItem ".\" -Recurse -Include ('*.js', '*.js.map')) | Foreach-Object { (Get-Content $_.FullName) | Set-Content -Encoding UTF8 $_.FullName }