防止汇总将 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'
})
]
};
更新:原来这不是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'
})
]
};