Babel编译后仍然出现es6语法解决思路
最近在实施vue-cli工程迁移webpack5的时候,遇到了经过babel转译仍然出现es6语法的情况。
经过排查分析,相当一部分新依赖库使用了es module进行导出,而webpack的js loader一般的如下配置教程是将node_modules下面所有依赖都不进行编译
1 | module.exports = { |
此种用法大部分情况都是正确的,但是遇到上述情况的时候,就需要正确配置,以下分别描述不同工作环境的配置方法。
Vue-cli配置
Vue-cli的配置文件为vue.config.js,在文件内有配置已经暴露出属性transpileDependencies。如果需要针对某一个package进行强制转译,可以使用语法。
vue.config.js文件必要部分
1 | module.exports = { |
Webpack配置
webpack的配置文件中,需要在对应的module的loader配置处,对相应的配置进行exclude,可以通过正则或者判断函数的方式进行筛选。
webpack.config.js文件必要部分
1 | module.exports = { |
或者如下使用函数方式进行判断
1 | module.exports = { |
常见需要强制转译的依赖
一般我们在使用的时候有如下一些依赖需要强制转译:
| 依赖名称 | 描述 |
|---|---|
| swiper | 一个热门的轮播插件,在7以上版本以esm导出,需要转译 |
| dom7 | 一个迷你操作dom的依赖,被swiper引用 |
| ssr-window | 一个在SSR环境处理window和document的依赖,被swiper引用 |
| pdfjs-dist | 一个流行的pdf阅读插件 |
| material-ui | 一个流行的UI库 |