【发布时间】:2015-11-26 23:43:15
【问题描述】:
默认情况下,Babel 提出 Promise polyfill。如何强制它使用 Bluebird 实现或禁用 polyfill(我使用预设 es2015)。
很容易忘记导入 Bluebird 并意外使用 polyfill 实现。
【问题讨论】:
-
我很困惑,是因为您将导入命名为
Promise很容易忘记,还是因为您将两者混淆了? Babel 只是使环境标准,如果你没有加载任何 polyfill 并且在已经有 Promise 的环境中运行代码,你会遇到同样的问题。这不是真正的 Babel 问题。 -
考虑一种情况:我说的是
let Promise = require('bluebird')。但是我的年轻同事只是忘记了这样做。现在他有一个 Promise 没有像spread这样的方法 -
完全可以,但这是允许隐藏全局变量的副作用。我通常会有一条 linting 规则来禁止这种情况,如果需要,可以使用
let Bluebird = require('bluebird');。 Chrome、Firefox 和 Node >=0.11 都有一个全局的Promise,无论你是否使用 Babel,它都会在那里。您始终可以在应用程序开始时使用window.Promise = require('bluebird');,但随后您将依赖非标准行为和变异全局变量,这不是一个好主意。 -
你的想法听起来很合理。谢谢。你是如何添加规则的?可以给个代码吗?