Webpack 网页包从babel错误中隐藏堆栈跟踪
我有一个相对标准的webpack设置:webpack+babel-stage-0 如果有语法错误,babel会给我一个非常有用的错误消息,但也有一个与我的代码完全无关的堆栈跟踪,它通常比终端本身长 有没有办法从Webpack 网页包从babel错误中隐藏堆栈跟踪,webpack,babeljs,javascript-build,Webpack,Babeljs,Javascript Build,我有一个相对标准的webpack设置:webpack+babel-stage-0 如果有语法错误,babel会给我一个非常有用的错误消息,但也有一个与我的代码完全无关的堆栈跟踪,它通常比终端本身长 有没有办法从Parser.pp.raise 我知道这是一件很小的事情,但是隐藏堆栈跟踪将意味着更少的视觉噪音,并且我不必向上滚动半个终端窗口来查看我的错误消息 我尝试过的事情 我试着用以下方法隐藏stderr: webpack --watch > /dev/null 但这似乎没有什么帮助。我
Parser.pp.raise
我知道这是一件很小的事情,但是隐藏堆栈跟踪将意味着更少的视觉噪音,并且我不必向上滚动半个终端窗口来查看我的错误消息
我尝试过的事情
我试着用以下方法隐藏stderr:
webpack --watch > /dev/null
但这似乎没有什么帮助。我也遇到过同样的问题,显然没有真正的解决办法。所以我想出了一个办法:
$webpack--watch--color | grep-v'^at.*/node_modules/'
这将过滤webpack输出以删除节点\u modules dir的回溯,并且--color
选项确保grep不会删除您的颜色如果您是(例如,从一个gulpfile)您可以使用以下一行代码过滤异常消息:
// filter webpack/babel error traces
const filterStackTraces = err =>
err.toString().split(/[\r\n]+/).filter(line => ! line.match(/^\s+at Parser/)).join(os.EOL);
// example use:
compiler.run( (err, stats) => {
if (err) return done( new gutil.PluginError('webpack', err));
if ( stats.hasErrors() ) {
const statDetails = stats.toJson({errorDetails: false});
// print out parse errors
statDetails.errors.forEach((e) => gutil.log(error(tag), filterStackTraces(e)));
return done(new gutil.PluginError('webpack', 'Parse/ build error(s)'));
}
gutil.log(gutil.colors.green(tag), stats.toString({colors: true}));
done();
});
它将在不接触错误消息和源上下文片段的情况下删除堆栈跟踪,并保持颜色不变。显然,当没有匹配项时,grep有一个非零的退出代码。如果您想在NPM脚本中使用此参数,请使用
npx webpack--color | grep-v'^at'| true
(当然,使用您需要的任何其他参数,只需注意| true
)。