babel-polyfill可以让我们愉快的使用浏览器不兼容的es6、es7的API,但往往项目中只会用到这些API的一部分,一个babel-polyfill压缩后也有近100k的大小,这确实很恐怖。比如我希望项目里用到Promise,打包时只加载Promise的部分代码,而非整个polyfill。如何能让babel-polyfill按需加载呢?
2 回答
哆啦的时光机
TA贡献1779条经验 获得超6个赞
babel7的@babel/preset-env的useBuiltsIns提供了相对比较完美的解决方案:useBuiltIns默认为false根据browserlist是否转换新语法与polyfill新APIfalse:不启用polyfill,如果import'@babel/polyfill',会无视browserlist将所有的polyfill加载进来entry:启用,需要手动import'@babel/polyfill',这样会根据browserlist过滤出需要的polyfillusage:不需要手动import'@babel/polyfill'(加上也无妨,构造时会去掉),且会根据browserlist+业务代码使用到的新API按需进行polyfill
元芳怎么了
TA贡献1798条经验 获得超7个赞
类似如下方式方式1constPromise=require('babel-runtime/core-js/promise')方式2import'core-js/es6/promise'上面两种方式的区别,第一种是模块内引入,而第二种是全局的,你可以根据需求选择合理的方式。youcanactuallypullinonlythepolyfillsyouarecurrentlyusingorwanttouseusingcore-js.Soinsteadofpullinginbabel-polyfillintoourapp参考说明链接
添加回答
举报
0/150
提交
取消
