如何在TS编译错误上使webpack2失败?

时间:2017-06-08 17:23:17

标签: typescript error-handling webpack webpack-2 ts-loader

我有一个运行良好的webpack2配置,但是如果存在TS编译错误,我不希望继续构建。以下是我收到的合法错误示例:

ERROR in ./ClientSide/app/panels/panel-side-bar/my-organizer/my-organizer.component.ts
(127,33): error TS2346: Supplied parameters do not match any signature of call target.

这是一个正确的错误,但我希望webpack不仅仅是继续。目前,无论在webpack编译期间发生什么TS编译错误,webpack仍然构建捆绑包。我想让webpack抛出它已经发出的错误(红色),并在发生这种情况时停止捆绑过程。

我尝试在webpack.config中添加配置开关:

bail: true,

但这并没有解决问题。

如果我应该在TS的加载器中识别某些内容,我该怎么告诉它将错误推送到webpack2?我尝试了以下TS加载程序选项,但它们没有将错误传播到webpack的效果:

module: {
    rules: [
        {
            test: /\.tsx?$/,
            use: ['ts-loader?' + JSON.stringify({transpileOnly: false, noEmitOnError: true})],
            exclude: [/node_modules/, /test/]
        },

然而,这也不起作用。

似乎应该有一些内置到webpack或其加载器中以正确传播错误以使进程失败。任何人都有一个解决方案,可以让我配置这些故障被冒泡,仍然允许我查看正在生成的TS错误(这样我不仅可以知道构建失败,而且导致它的特定TS错误)。

我做了一些研究,发现人们声称使用(webpack-fail-plugin)应该解决这个问题,但是,这显然只适用于webpack 1.据说,webpack2解决了这个问题,因为插件明确声称{{ 3}}。但是,这不是真的,因为我的帖子在这里确认。事实上,ts-loader本身声称你需要使用webpack 2的插件(参见https://www.npmjs.com/package/webpack-fail-plugin)。为了尝试每一个可能的解决方案,我将插件导入到我的项目中并尝试按照使用文档(https://github.com/TypeStrong/ts-loader#failing-the-build-on-typescript-compilation-error)使用它。但是,唉,它失败了。

我在试图理解webpack 2的解决方案时失去了理智。那里有任何一个人对此有合理的答案吗?

1 个答案:

答案 0 :(得分:3)

只需在您的webpack配置中添加一个插件,如下所示:

Fiddler Link

使用ts-loader 2.2.2在Webpack 2.6.1中进行测试。

希望这有帮助:)