Webpack5 系列:Babel 的配置

1.前言

本篇将介绍对于项目中 JS 文件的处理。

2.babel-loader

2-1.依赖安装

shell 复制代码
npm install -D babel-loader @babel/core @babel/preset-env

2-2.Loader 配置

webpack.config.js

s 复制代码
module: {
  rules: [
    {
      test: /\.?js$/,
      exclude: /node_modules/,
      use: {
        loader: 'babel-loader'
      }
    }
  ]
}

对于 babel 的配置,我们一般放在 babel.config.json 中,在根目录中新建 babel.config.json。

3.Babel 的配置

3-1.一般情况下的babel配置

babel.config.json

json 复制代码
{
  "presets": [
    ["@babel/preset-env", {
      "useBuiltIns": "usage", // 按需引入 corejs 中的模块 
      "corejs": 3, // 核心 js 版本
      "targets": "> 0.25%, not dead" // 浏览器支持范围
    }]
  ]
}

还需要下载的依赖:

shell 复制代码
npm i core-js@3 --save

注意: 必须要配置 useBuiltIns,如果不配置,babel 将不会处理 Promise、Map、Set、Symbol 等全局对象;corejs 也要同时配置,2 的版本可以处理全局对象,但实例方法并不处理,所以这里用 3 的版本。

3-2.最佳的 babel 配置

如果在写一个库时,最好添加上插件 ------ babel/plugin-transform-runtime,配置如下:

js 复制代码
{
  "presets": [
    ["@babel/preset-env", {
      "targets": "> 0.25%, not dead"
    }]
  ],
  "plugins": [
    // 不污染全局,在运行时加载
    ["@babel/plugin-transform-runtime", {
      "corejs": 3
    }]
  ]
}

还需要下载的依赖:

shell 复制代码
npm install --save-dev @babel/plugin-transform-runtime
npm install --save @babel/runtime
npm install --save @babel/runtime-corejs3

@babel/preset-env just transforms code with syntax, if we don't config useBuiltIns.

@babel/transform-runtime can provide re-use helpers, but don't polyfill by default.

Most situation best config: use @babel/preset-env transforms syntax. use @babel/transform-runtime avoid duplicate code, and config corejs: 3 to polyfill.

相关推荐
祈澈菇凉2 天前
webpack和grunt以及gulp有什么不同?
前端·webpack·gulp
AsBefore麦小兜2 天前
Vite vs Webpack
前端·webpack
垣宇3 天前
Vite 和 Webpack 的区别和选择
前端·webpack·node.js
小纯洁w4 天前
Webpack 的 require.context 和 Vite 的 import.meta.glob 的详细介绍和使用
前端·webpack·node.js
海盗强4 天前
Webpack打包优化
前端·webpack·node.js
祈澈菇凉4 天前
如何优化 Webpack 的构建速度?
前端·webpack·node.js
懒羊羊我小弟4 天前
常用 Webpack Plugin 汇总
前端·webpack·npm·node.js·yarn
祈澈菇凉5 天前
Webpack的持久化缓存机制具体是如何实现的?
前端·webpack·gulp
懒羊羊我小弟6 天前
Webpack 基础入门
前端·webpack·rust·node.js·es6
刽子手发艺6 天前
Selenium+OpenCV处理滑块验证问题
opencv·selenium·webpack