javascript - 如何从 gulp-esdoc 内部触发错误?

标签 javascript git documentation gulp

我正在使用 gulp-esdoc 生成我的文档(它已经可以工作了)。

今天我添加了一个 git pre-commit 钩子(Hook),它启动多个 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 代码中缺少注释,我会进入带有“待办事项”的行)时返回错误。

最后,这是我的(简化的)git-hook(在我的 gulpfile 中):

gulp.task('pre-commit', function () {
    gulp.start('lint');
    gulp.start('documentation');
});

'lint' 部分有效,如果我的代码中有错误,它会阻止提交。但是使用 gulp-esdoc 的“文档”代码不会返回任何错误,因此提交已完成 :( 我不知道该怎么做才能返回错误并阻止 git 提交。

我需要这样做,因为我希望加入我的团队的初级开发人员被迫记录他们的代码:p

感谢您的帮助!

最佳答案

一个选择是抛出 PluginError :

throw new gutil.PluginError('esdoc', 'Something broke');

这将导致您的 gulp 进程以非零退出代码退出。然而,它会在 STDERR 上留下相当丑陋的堆栈跟踪(特别是因为 gulp-esdoc 从插件中重新抛出错误)。

另一种选择是使用特定的退出代码显式退出进程:

process.exit(1);

process Node.js 中的对象是一个全局对象,可以从任何地方访问而无需 require() 它。

关于javascript - 如何从 gulp-esdoc 内部触发错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35869370/

相关文章:

git - 为特殊文件类型设置 'git diff'

git - Git 中的分支和 merge 最佳实践

windows - 在 Windows 上构建 Go 1 文档

documentation - 有人知道比较不同 Scheme 实现的好文档吗?

javascript - 使用 CucumberJs 进行场景失败后截取屏幕截图并重新启动浏览器

Javascript 行号映射

javascript - 填充一些文本后如何在 Canvas 上设置高度?

javascript - 当我使用 Angular Material 和一些自定义代码时如何解决 Angular 应用程序中的 $event 问题

git - 如何处理依赖于另一个未 merge 功能分支的功能分支?

android - 是否有 Android Skia logcat 输出的文档?