我可以检测文件/文件夹并将其写入磁盘,如下所示:
$ istanbul instrument public --output public-coverage --embed-source true
但是我想知道是否有办法即时检测文件并将它们提供给浏览器而无需将检测文件写入磁盘。像这样的东西:
app.use(function(req,res,next){
const file = req.path; // whatever
const k = cp.spawn('istanbul', ['instrument']);
fs.createReadStream(file).pipe(k.stdin).pipe(res);
});
有谁知道这是否可能以及如何?
实际上是。
下面是一个例子,我只是截取普通“main.js”文件的请求,而是返回“已检测”版本。只是一个概念证明,没有任何错误处理,只针对特定文件,但我认为你明白了。
或者,您可以在代码“require(”istanbul“)”中加载instanbul并在没有实际生成的情况下执行操作
app.get("/main.js", (req, res, next) => {
const cmd = path.join(__dirname, "node_modules", ".bin", "istanbul");
const file = path.join(__dirname, "public/main.js");
const s = spawn(cmd, ["instrument", file, "--embed-source", "--no-compact", "--preserve-comments"]);
s.stdout.on("data", (data) => {
res.send(data);
});
});