猿问

如何让babel-polyfill按需加载?

babel-polyfill可以让我们愉快的使用浏览器不兼容的es6、es7的API,但往往项目中只会用到这些API的一部分,一个babel-polyfill压缩后也有近100k的大小,这确实很恐怖。
比如我希望项目里用到Promise,打包时只加载Promise的部分代码,而非整个polyfill。
如何能让babel-polyfill按需加载呢?
郎朗坤
浏览 1254回答 2
2回答

哆啦的时光机

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

元芳怎么了

类似如下方式方式1constPromise=require('babel-runtime/core-js/promise')方式2import'core-js/es6/promise'上面两种方式的区别,第一种是模块内引入,而第二种是全局的,你可以根据需求选择合理的方式。youcanactuallypullinonlythepolyfillsyouarecurrentlyusingorwanttouseusingcore-js.Soinsteadofpullinginbabel-polyfillintoourapp参考说明链接
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答