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

时间:2017-08-07 14:44:12

标签: javascript rollupjs

更新:原来这对Babel来说不是问题,但是使用之前运行的Rollup。无论如何,谢谢你的帮助,并为噪音感到抱歉。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:4)

尝试使用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'
    })
  ]
};