webpack5用babel-loader将es6的js代码转换成es5
2023-09-11 14:19:39 时间
-
例如项目中用到的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 }, ] } } }
-
相关文章
- ES6实战:新数字方法
- JS框架_(JQuery.js)绚丽的3D星空动画
- JS框架_(Typed.js)彩色霓虹灯发光文字动画
- Js基础知识7-Es6新增对象Map和set数据结构
- [Node.js] Testing ES6 Promises in Node.js using Mocha and Chai
- [ES6] 10. Array Comprehensions
- js es6 map weakmap
- [ES6] ... spread operator
- js es6 delete
- js es6 Iterator
- js es6系列——map函数
- ES6学习之路6----箭头函数
- JS ES6 中export 和 export default 的区别
- ES6中static关键字使用
- JavaScript ES6 Fetch API时需要注意的一个Cookie问题
- Atitit js版本es5 es6新特性
- JavaScript ES6对Proxy的原生支持的一个例子:开发人员学习额外的编程语言
- 原生js实现随机验证码HTMl-JS
- JS数组对象排序(es6)
- es6 语法 (数组扩展)
- JavaScript前端经典面试题之ES6面试题汇总es6