webpack5用babel-loader将es6的js代码转换成es5

-

例如项目中用到的promise  async  await这些es6语法,在现代浏览器是支持的,但是在一些老的浏览器就不支持,所以就需要用到babel-loader将es6语法转化为es5语法,使得更老的浏览器也支持我们的代码。

需要下载3个插件

npm install babel-loader @babel/core @babel/preset-env -D

 

babel-loader:在webpack里用babel解析es6的桥梁

@babel/core: babel的核心模块

@babel/preset-env: babel预设,一组babel插件的集合

webpack.config.js配置

复制代码
module: { // 模块加载配置
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/, // 把node_modules排除在外,node_modules中的js是不需要转化
        use: {
          loader: 'babel-loader',
          options: { // 配置项
            presets: ['@babel/preset-env'],
          }
        }
      }
    ]
  },
复制代码

 如果报错_regeneratorRuntime没找到,就安装

@babel/runtime 这是babel运行的时候需要的环境

@babel/plugin-transform-runtime  这个插件会在用的regeneratorRuntime时自动require导包,然后编译的时候会使用它

npm install @babel/runtime  @babel/plugin-transform-runtime -D

因为我的没报错,就没单独装这俩插件,

如果报错了,可以装上这俩插件,然后在配置上加上去

复制代码
{
        test: /\.js$/,
        exclude: /node_modules/, // 把node_modules排除在外,node_modules中的js是不需要转化
        use: {
          loader: 'babel-loader',
          options: { // 配置项
            presets: ['@babel/preset-env'],
            plugins: [
              ['@babel/plugin-transform-runtime']
            ]
          }
        }
      }
复制代码

 

 ===

复制代码
{
        test: /\.js$/,
        exclude: /node_modules/, // 把node_modules排除在外,node_modules中的js是不需要转化
        use: {
          loader: 'babel-loader',
          options: { // 配置项
            presets: [
              '@babel/preset-env',
              {
                targets: [
                  'last 1 version', // 匹配浏览器的最新版本
                  '> 1%', // 全球使用者1%以上的浏览器
                ],
                useBuiltIns: 'usage', // 按需引入转化js所需的垫片
                corejs: 3
              },
            ]
          }
        }
      }
复制代码

 

 

-

posted @   古墩古墩  Views(891)  Comments(0Edit  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2021-06-05 nodejs零碎知识
2020-06-05 移动端 input的失去焦点事件和点击按钮的点击事件冲突,怎么解决?
点击右上角即可分享
微信分享提示