2016-03-08 44 views
2

我正在使用gulp-esdoc來生成我的文檔(它已經工作)。如何從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的鉤(在我gulpfile):

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

的「絨毛」的部分作品,它防止提交如果我在我的代碼中的錯誤。但'文檔'代碼,使用gulp-esdoc,不會返回任何錯誤,所以提交完成:(我不知道該怎麼做才能返回錯誤並阻止git提交。要做到這一點,因爲我想要的初級開發人員加入我的團隊被迫描述他們的代碼:p!

感謝您的幫助

回答

1

一種選擇是拋出一個PluginError

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

這將導致您的吞嚥過程以非零退出鱈魚退出即但是,它會在STDERR上留下一個相當難看的堆棧跟蹤(尤其是因爲gulp-esdoc會從插件中反映出錯誤)。

另一種選擇則是與特定退出代碼明確退出過程:

process.exit(1); 

process對象Node.js的是一個全局對象,並可以在任何地方,而不必require()它來訪問。