TypeScript生成的JS文件编码

Dav*_*nek 9 encoding typescript visual-studio-2015

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

一旦我手动修复生成的文件的编码就没问题了.但后来我必须在源代码管理中包含生成的文件并修复任何新添加的文件.

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

项目类型jsproj,tsconfig.json根据https://github.com/Microsoft/TypeScript/issues/3124似乎不支持

bas*_*rat 7

一旦我手动修复生成的文件的编码就没问题了.但后来我必须在源代码管理中包含生成的文件并修复任何新添加的文件.

使用tsconfig.json中的emitBOMcharset选项:

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

        //... other stuff

        "emitBOM": true,
        "charset": "utf8"
    },
    // ...
}
Run Code Online (Sandbox Code Playgroud)

请参阅架构:http://json.schemastore.org/tsconfig


Dav*_*nek 0

不幸的是,TypeScript 在当前状态下在 VS2015 中并未得到完全支持(如果将来发生变化,将更新此答案)。

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

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

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