防止汇总将 Promise 重命名为 Promise$1

Prevent rollup from renaming Promise to Promise$1

更新:原来这不是Babel的问题,而是Rollup的问题,之前是运行。无论如何感谢您的帮助,很抱歉造成噪音。

我使用 rollup 捆绑了许多模块,包括 Promise polyfill(故意覆盖全局 Promise)。但是,rollup 将 Promise 识别为全局名称并转换

export default function Promise(fn) { ... }
...
global.Promise = Promise;

function Promise(fn) { ... }
...
global.Promise = Promise;

生成的代码有效,但我希望以下断言成立:

expect(Promise.name).to.equal('Promise');

有没有办法告诉 rollup 保持构造函数名称不变?

尝试使用 rollup-plugin-inject 并将其配置为将 import Promise from 'your-promise-polyfill' 添加到任何引用 Promise 的文件中。这样,Rollup 就不会认为它需要重命名在 polyfill 中声明的函数以避免与全局冲突,因为它不会意识到 一个全局的它是与冲突。

// rollup.config.js
import inject from 'rollup-plugin-inject';

export default {
  // ...
  plugins: [
    inject({
      Promise: 'your-promise-polyfill'
    })
  ]
};