更新:原来这对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');
有没有办法告诉汇总使构造函数名称保持不变?
答案 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'
})
]
};