我正在使用gulp-esdoc来生成我的文档(它已经有效)。
今天我添加了一个git预提交钩子,它启动了多个gulp任务,并在其中一个任务返回错误时阻止任何提交。
我的大多数任务都适用,但对于gulp-esdoc,我不知道如何返回这样的错误来阻止提交。
我用这种方式配置了我的esdoc:
gulp.task('documentation', function() {
gulp.src("./client/")
.pipe(esdoc({
destination: "./docs",
"title": "SOMETHING",
index: "./README.md",
"plugins": [{
"name": "./README/docplugins/on-complete.js"
}]
}));
});
正如您所看到的,我在生成文档后使用esdoc插件来执行一些代码,这是插件的代码:
var colors = require('colors'),
gutil = require('gulp-util');
exports.onComplete = function(ev) {
var output = require('../../docs/coverage.json');
var expectedCoverage = 100; // todo : get from option instead
var percentCovered = (output.actualCount / output.expectCount) * 100;
if (percentCovered < expectedCoverage) {
console.log('Code coverage is not sufficient (expected ' + expectedCoverage + '%, received only ' + percentCovered + '%) !!! Write some documentation or get out !'.red);
// return false; // todo
} else {
console.log('Code coverage is complete, well done :)'.green);
// return true;
}
};
这里的主要目标是,如果我的代码文档没有100%覆盖,则返回错误(代码逻辑正常,如果我的JS代码中缺少注释,我会使用&#34; todo& #34;
最后,这是我的(简化的)git-hook(在我的gulp文件中):
gulp.task('pre-commit', function () {
gulp.start('lint');
gulp.start('documentation');
});
&#39; lint&#39;部分工作,如果我的代码中有错误,它会阻止提交。但是&#39;文档&#39;代码,使用gulp-esdoc,不会返回任何错误,因此提交已完成:(我不知道如何返回错误并阻止git提交。
我需要这样做,因为我希望加入我的团队的初级开发人员被迫记录他们的代码:p
感谢您的帮助!
答案 0 :(得分:1)
一种选择是抛出PluginError
:
throw new gutil.PluginError('esdoc', 'Something broke');
这将导致您的gulp进程以非零退出代码退出。然而,它会在STDERR
上留下相当难看的堆栈跟踪(特别是因为gulp-esdoc
从插件中重新出现错误。)
另一个选择是使用特定的退出代码显式退出进程:
process.exit(1);
Node.js中的process
对象是一个全局对象,可以从任何地方访问,而无需require()
。