Typescript 文件更改时grunt ts监视不工作
我正在使用grunt:Typescript 文件更改时grunt ts监视不工作,typescript,grunt-ts,Typescript,Grunt Ts,我正在使用grunt: "dev-build": { src: ["src/**/*.ts", "typings/vendors.d.ts","typings/tsd.d.ts", "!libs/**/*.ts"], outDir: "artifacts/dev", watch: "src/**/*", options: {
"dev-build": {
src: ["src/**/*.ts", "typings/vendors.d.ts","typings/tsd.d.ts", "!libs/**/*.ts"],
outDir: "artifacts/dev",
watch: "src/**/*",
options: {
// comments: true,
// baseDir: 'src/',
module: "amd",
target: "es5",
sourceMap: true,
declaration: true, //inlineSourceMap :true,
//emitDecoratorMetadata:true,
//experimentalDecorators:true,
}
}
一切都很好:
“TypeScript编译完成:256个TypeScript文件的8.97s。”
但是,在更改文件(添加换行符)而不更改代码后,编译将使用手表中断:
### changed >>src/FxsPortal/FxsBaseItemViewModel.ts
Compiling...
### Fast Compile >>src/FxsPortal/FxsBaseItemViewModel.ts
Using tsc v1.6.2
C:/dev/AscendXYZ Portal/src/FxsPortal/FxsBaseItemViewModel.ts(2,21): error TS2307: Cannot find module 'knockout'.
我知道没有错误,因为我可以手动编译。我似乎不明白为什么它不工作时,手表的ts咕噜触发
我似乎不明白为什么它不工作时,手表的ts咕噜触发
可以安全地忽略这些错误。它们出现的原因是grunt只是从命令行驱动tsc
,并且只传递单个文件
更多
如果您真的在意,您可以使用
reference
标记引入全局.d.ts
文件(不通过导入/需要
导入的文件)。但我强烈反对。你应该打开一个IDE,让你知道真正的错误(…cough atom ts…作为参考,我只是想分享一下我是如何使用外部手表解决这个问题的
watch: {
devBuildWatch: {
files: ['src/**/*'],
tasks: ['ts:devBuild'],
options: {
spawn: false,
},
}
},
和一次改变行动
var changedFiles = {};
var onChange = grunt.util._.debounce(function () {
grunt.config('ts.devBuild.src', Object.keys(changedFiles).concat([ "typings/vendors.d.ts","typings/tsd.d.ts", "!libs/**/*.ts"]));
changedFiles = Object.create(null);
}, 50);
grunt.event.on('watch', function (action, filepath) {
changedFiles[filepath] = action;
onChange();
});
谢谢我将研究atom-ts。目前我正在并排使用VS typescript项目来突出显示。我理解文档,所以引用是一个输出文件?这是错误的,所以我可以把我的tsd.d.ts作为参考?(也可以使用数组吗)?对不起,您需要ts文件中的引用。不是Grunts中的选项看看我对外部手表的回答。如果我们在ts grunt上有一个选项,那么内部监视也会做类似的操作,比如将类型定义列表浓缩起来。嗨@basarat,我也遇到了这个问题。有新的解决方案吗?忽略控制台不是一个很好的方法,有点错过了watch IMO的目的。@basarat-这里真正的问题是,诚然,我可以忽略错误,文件将被编译,但由于这是一个错误,当我撤消我得到的最新代码更改时:
未检测到任何文件更改。跳过编译
-因此我将继续使用产生错误的编译代码。谢谢-如何将“onchange”代码链接到监视任务?如果您有一个正在运行的监视,那么grunt.event.on(“监视”)将在更改时触发