我正在使用gulp和webpack的现有coffeescript项目中使用typescript。
我注意到当coffeescript中存在语法错误时,它将无法执行gulp任务,并且不会继续执行以下步骤,这是所需的行为。使用我正在使用的打字机加载器(ts-loader),我可以在终端中看到错误消息,但是webpack任务从gulp的角度来看是成功的并继续。我想这是coffeescript加载器和打字稿加载器如何处理错误的区别。
例如,我可以添加以下打字稿文件:
function greet(name: string) {
return 'Hello '+name;
}
export = greet;
{
并查看构建中的错误:
ERROR in ./bin/arranged/webkit/hcube/dummy.ts
(8,1): error TS1005: '}' expected.
但它仍然继续与webpack的其余构建没有返回任何错误。
我意识到,与coffeescript不同,typescript有很多文件间依赖关系,这使得ts-loader更复杂,但我觉得它应该在某些时候仍然失败。当存在语法错误时,在命令行上运行typescript编译器会返回预期的退出代码,所以我觉得问题在于加载器本身。
在ts-loader的after-compile插件中,是否应该以不同的方式向webpack报告错误以进行传播?现在看起来它只是将错误附加到后编译插件中的webpack,而webpack只是继续卡车运输(参见https://github.com/TypeStrong/ts-loader/blob/master/index.ts#L398)。如果遇到错误,加载程序是否应该在此插件中引发错误?或者以不同的方式调用回调?或者应该在装载机的其他部分处理?同样,这个特定的例子是一个语法错误,所以我想它会在执行after-compile之前被捕获/引发。