我正在使用带有Typescript 1.5.4和Resharper 9的Visual Studio 2015
这是错误的情况:
这很烦人,因为它在Git中产生了太多的噪音 它阻止我直接在浏览器中调试typescript文件。 (因为缺少.js.map文件)
理想的行为当然是应该在保存时编译唯一更改的.ts文件。怎么做?
似乎R#与此无关,因为它会在R#禁用的情况下继续发生。
------------- ------------- UPDATE
我尝试更新到Typescript版本1.6。
PATH变量指向C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.4\
,因此我将其更新为指向1.6
因此,当我现在输入tsc -v
时,它会显示message TS6029: Version 1.6.2
但是由于历史原因(我工作的项目大约2年),我必须在VisualStudio中使用版本1.4
。所以.csproj是<TypeScriptToolsVersion>1.4</TypeScriptToolsVersion>
此更改后,compile on safe
完全停止了工作。
现在我必须重建整个解决方案:(
答案 0 :(得分:6)
似乎Visual Studio不能正确支持监视模式(即增量编译):
为了清楚起见,如果您正在使用,
--watch
可以在Windows上运行 node.js / io.js,但与VS一起分发的tsc.exe程序没有 支持它;您仍然可以在保存时编译以获得类似功能 无论如何。
https://github.com/Microsoft/TypeScript/issues/2375#issuecomment-100812347
我不确定为什么关闭它。支持 - 监视我们的tsc.exe 主机既可能又可取。现在是限制 因素是我们的tsc.exe主机有点丑陋的C ++,它使用了一些 Chakra的古老COM接口,我们没有花太多精力 上。我们的选择是:[...]
https://github.com/Microsoft/TypeScript/issues/2375#issuecomment-100949019
作为解决方法,你可以运行
tsc --watch
在tsconfig.json
所在的文件夹中?
编辑: https://github.com/Microsoft/TypeScript/issues/5638 - 当更改SINGLE文件时,Visual Studio 2015会编译所有打字稿文件
每次保存文件时,从VS 2015 RTM,Compile-on-Save开始 我们需要生成项目中的所有文件以确保一致 输出。我们遇到了许多与输出不一致有关的问题 以不同的顺序保存文件时。构建所有文件是唯一的 我们可以保证所有的输出都是正确和一致的 语言结构以及它们如何跨文件交互(例如 命名空间/内部模块可以扩充,并影响 发出的代码的形状,const const也作为常量排列, 等。)。
答案 1 :(得分:1)
在“ECMAScript版本
中尝试”ECMAScript 5“而不是”ECMAScript 3“答案 2 :(得分:0)
我有类似的问题,但由于我们自己处理TS编译,我想完全避免自动编译...
修复方法是在项目中强制TypeScriptCompileOnSaveEnabled
标记为 false
:
<PropertyGroup>
<TypeScriptCompileOnSaveEnabled>false</TypeScriptCompileOnSaveEnabled>
</PropertyGroup>
在我的情况下,这有效地阻止了VS2015在保存时自动编译.ts文件,而不会每次都妨碍VS并弄乱输出......
答案 3 :(得分:0)
另一项解决方法:您可以使用Gulp 生成已编译的js文件和地图。使用Gulp,您还可以创建监视任务,以便在保存ts文件时进行编译。您甚至可以创建干净的任务来清理项目。
构建任务的示例:
gulp.task("clean:tsout", function (cb) {
rimraf(paths.typescriptOut + paths.concatTsFileName, cb); // rimraf is used to delete a folder
});
gulp.task("clean:scriptjs",
function () {
return gulp.src(paths.typescriptJs, { read: false }) // to clean up multiple files we need to use gulp-rimraf
.pipe(gulpRimraf());
});
清理任务示例:
gulp.task("watch:tsbuild", ['tsbuild'], function () {
gulp.watch(paths.typescriptRoot + '**/*.ts', ['tbbuild']);
});
Watch任务示例:
{{1}}