webpack之配置es6转换成es5

为什么要将代码中的es6语法转换成es5语法呢?这是因为有些浏览器无法识别es6语法。而webpack在不借助babel的情况下,只能对js进行打包处理,无法将es6语法转换成es5语法,这就需要我们借助bable-loader去实现es6语法转换成es5语法

  1. 下载需要的包
// 下载需要的babel-loader
yarn add babel-loader @babel/core @bable/preset-env

// babel-loader:在webpack里应用babel解析es6的桥梁
// @babel/core babel的核心模块
// @bable/preset-env babel预设,一组babel插件的集合
  1. webpack.config.js 的配置
module: {
    rules: [
        {
            test: '/\.js$/',
            exclude: /node_modules/,
            use: {
                loader: 'babel-loader',
                options: {
                    presets: ['@babel/preset-env']
                }
            }
        }
    ]
}
  1. 如果js模块代码中拥有await、async 语法

如果js中有await、async语法,我们需要额外下载两个包用来兼容该写法

// 需要下载的包
yarn add @babel/runtime @babel/plugin-transform-runtime
// @babel/runtime 该包用来兼容es6中的await和async写法,babel会生成一个regeneratorRuntime函数,该函数是webpack打包生产的全局辅助函数,用来兼容await和async写法
// @babel/plugin-transform-runtime 是个插件,该插件会在需要regeneratorRuntime函数的时候自动导入包
// webpack.config.js 配置
module: {
    rules: [
        {
            test: '/\.js$/',
            exclude: /node_modules/,
            use: {
                loader: 'babel-loader',
                options: {
                    presets: ['@babel/preset-env'],
                    plugins: [
                        [           // 这里再定义数组的原因是因为可以在数组中配置插件的一些信息
                            '@babel/plugin-transform-runtime'
                        ]
                    ]
                }
            }
        }
    ]
}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐