2

我可以检测文件/文件夹并将其写入磁盘,如下所示:

$ 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);
});

有谁知道这是否可能以及如何?

4

1 回答 1

0

实际上是的。

下面是一个示例,我只是截取对普通“main.js”文件的请求并返回“instrumented”版本。只是一个概念证明,没有任何错误处理,只针对特定文件,但我认为你明白了。

或者,您可以在代码“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);
  });
});
于 2018-09-06T14:34:47.287 回答