我有一个正在运行的吞咽监视任务,它正在编译我的前端应用程序。当我遇到打字稿错误时(仅仅是因为我过早点击保存),整个过程崩溃,我必须手动重新启动它。我希望 webpack 和打字稿编译器只报告错误,只要它们在监视模式下运行,而不是使进程崩溃。
我使用 webpack 编译我的打字稿应用程序的任务:
gulp.task('scripts', function (callback) {
var isWatching = watchEnabled;
var webpackOptions = {
resolve: { extensions: ['', '.ts'] },
watch: watchEnabled,
module: {
preLoaders: [{ test: /.ts$/, exclude: /node_modules/, loader: 'tslint-loader' }],
loaders: [{ test: /.ts$/, exclude: /node_modules/, loader: 'awesome-typescript-loader' }]
},
output: { filename: 'app.js' },
tslint: { emitErrors: !watchEnabled } // tslint crashes gulp when emitting errors, so don't do it while watch is enabled
};
if (debugEnabled) {
webpackOptions.devtool = 'inline-source-map';
}
var webpackChangeHandler = function (err, stats) {
if (err) {
console.error('Webpack', err);
}
$.util.log(stats.toString({
colors: $.util.colors.supportsColor,
chunks: false,
hash: false,
version: false
}));
if (isWatching) {
isWatching = false;
callback();
}
};
return gulp.src('./Scripts/application/app.ts')
.pipe(webpack(webpackOptions, null, webpackChangeHandler))
.pipe($.if(!debugEnabled, $.uglify()))
.pipe($.if(!watchEnabled, $.rev()))
.pipe(gulp.dest(tmpFolder + 'Content/'));
});
在 CI 服务器中编译时,编译和 tslint 错误会使进程崩溃并且 CI 服务器报告错误是件好事。
但是,在开发时,它非常烦人。我已经解决了 tslint 问题,只要 gulp 手表和 webpack 手表正在运行,我就关闭了 emitErrors。但是对于打字稿编译,我不确定该怎么做。
这是我应该在 webpack 或很棒的打字稿加载器上找到的选项吗?
我在真棒打字稿加载器 github 存储库上没有找到任何适合这个问题的东西,这让我认为我应该启用一些 webpack 选项,但是哪一个呢?
也有同样的问题。 这对我有用
var wp = webpack(webpackOptions, null, webpackChangeHandler);
// can bind error to console, but it will be duplicated with webpackChangeHandler err
// wp.on('error', console.error.bind(console));
wp.on('error', function() {});
return gulp.src('./Scripts/application/app.ts')
.pipe(wp)
.pipe($.if(!debugEnabled, $.uglify()))
.pipe($.if(!watchEnabled, $.rev()))
.pipe(gulp.dest(tmpFolder + 'Content/'));