如何使用 MagicString 提供带有 Rollup 的 `renderChunk` 钩子的 sourcemap?

问题描述 投票:0回答:0

我需要对 Rollup 的输出做一些后期处理,所以我有一个使用

magic-string
的插件,如下所示:

{
  name: 'postprocessing',
  renderChunk(code, chunk, opts) {
    const s = new MagicString(code);
    s.replace(...);

    return {
      code: s.toString(),
      map: null,
    }
  }
}

这里明显的问题是之前生成的源映射将被关闭,因为它们不考虑对代码所做的更改。

但是,非常不清楚实际上应该如何生成一个 sourcemap 并合并到现有的 sourcemap 中(对于构建管道中所做的所有其他更改)。我所做的每一次尝试都会导致 Rollup 吐出一个完全空的最终源映射,除非我返回

null
,其中它只是由于我的替换插件而不正确。

{
  name: 'postprocessing',
  renderChunk(code, chunk, opts) {
    const s = new MagicString(code);
    s.replace(...);

    return {
      code: s.toString(),
      map: s.generateMap({ }), // What options am I supposed to use here?
    }
  }
}

如果我不返回,Rollup 输出的 sourcemap

null
:

{"version":3,"file":"foo.umd.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
rollupjs
© www.soinside.com 2019 - 2024. All rights reserved.