我正在探索grunt-inline模块,并面临以下问题。我有以下任务的配置:
grunt.initConfig({
inline: {
options: {
uglify: true
},
dist: {
src: 'src/index.html',
dest: 'dist/index.html'
}
}
});
从上面的配置uglify: true
选项意味着在this line上执行UglifyJS.minify
:
var c = options.uglify ? UglifyJS.minify(inlineFilePath).code : grunt.file.read( inlineFilePath );
问题在于,如果UglifyJS.minify
抛出异常(我刚刚面对),grunt inline
命令不会失败但会退出。
那么,这个模块的问题是否缺少我身边的一些咕噜声?
如果你能解释我如何在任何例外情况下打破咕噜声执行,那将是很棒的。
修改 我也注意到,如果我抓住异常并自己重新抛出异常,它就会发出咕噜声,如下所示:
try {
var c = options.uglify ? UglifyJS.minify(inlineFilePath).code : grunt.file.read( inlineFilePath );
} catch(e) {
throw new Error(e.message);
}
那么为什么来自UglifyJS.minify(inlineFilePath).code
的异常会打破gruntjs任务呢?
答案 0 :(得分:2)
看起来模块有问题。我似乎无法找到标记并返回这些错误的方法。你可以尝试用以下代码替换该行:
var c;
if(options.uglify){
try{
c = UglifyJS.minify(inlineFilePath).code
}catch(err){
grunt.log.error(err);//catch error and send to grunt
}
}else{
c=grunt.file.read( inlineFilePath );
}
<强>更新强> 那么为什么来自UglifyJS.minify(inlineFilePath)的代码异常.code break gruntjs task?
看起来这是错误本身的问题:JS_Parse_Error
这不是一个正确构造的错误,并没有被grunt捕获。看起来你必须亲自抓住并将其包裹在new Error()
中,如上所述,直到修复进入。请参阅下面的链接: