以编程方式使用伊斯坦布尔的最小代码

我想执行这个命令

istanbul cover node_modules/mocha/bin/_mocha dist/test 

使用伊斯坦布尔程序化API。 但是文档并没有多说,除此之外,一切都是可能的,并链接到庞大的API文档。 我在互联网上找不到任何简短的例子。 我不想产生subprocess或使用NPM中的另一个模块。 我知道如何在没有覆盖的情况下以编程方式运行摩卡,所以这不是问题。

我想出了一个办法,但不是太漂亮。 如果您eval (我知道!)检测到的代码,伊斯坦布尔将覆盖率对象写入全局variables__coverage__ 。 如果你愿意的话,你也可以在指导员的构造函数中指定全局variables的名字。 这是一个命令行脚本,显示如何完成它:

 const istanbul = require('istanbul'); const instrumenter = new istanbul.Instrumenter(); const collector = new istanbul.Collector(); const fs = require('fs'); const filename = 'file.js'; fs.readFile(filename, 'utf-8', (err, data) => { instrumenter.instrument(data, filename, (err, generatedCode) => { eval(generatedCode); console.log(JSON.stringify(global['__coverage__'])); }); }); 

文件部分和console.log只是做一个完整的演示。 你真正需要的是instrumenteval 。 你是否会在这里使用评价取决于你。