美文网首页
webpack基础(九) Babel处理js

webpack基础(九) Babel处理js

作者: Viewwei | 来源:发表于2021-01-22 11:03 被阅读0次

什么是babel?

Babel是JavaScript编译器,能将ES6代码转换成ES5代码,让我们开发过程中放心使用JS新特性,而不用担心兼容性问题,并且还可以通过插件机制根据需求灵活配置扩展
Babel在执行编译的过程中,会从根目录下的.babelrc 文件中读取配置,如果没有该文件会从loader的options读取配置。

Babel中预设

  • babel-loader:babel和webpack的连接桥梁
  • @babel/presets-env: ES6转换成ES5代码
  • @babel/preset-flow:flow是JavaScript代码的静态类型检查器
  • @babel/preset-react:处理react的jsx语法
  • @babel/preset-typescript 处理ts语法

babel配置

前提1:安装babel

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

前提2:如果需要安装polyfill垫片 @babel/ployfill

npm install --save @babel/polyfill
  1. 在webpack.config.js中配置loader
 {
        test: /\.js$/,
        use: {
          loader: "babel-loader",
        },
      }
  1. 在根目录下新建.babelrc文件,文件配置如下
{
    "presets": [
        [
            "@babel/preset-env",
            {
                  "targets": {
                  
                    "edge": "17",
                    "chrome": "67"
                },
                  "corejs": 2,
                  "useBuiltIns": "usage" 
            }
        ],
        "@babel/preset-react"
    ]
}

presets属性说明

  • targets 目标浏览器的配置,类似.broselist中目标浏览器
  • corejs 使用corejs的版本,可以使用3的前提就是手动在本地需要安装core.js的3.x版本
  • useBuiltIns 是babel7的新功能,这个选项是告诉babel如何去配置@babel/polyfill
    它有三个值
    • entry 需要在webpack的入口文件中import “@babel/ployfill”一次。babel会根据你实际情况导入垫片,没有使用的功能不会导入相应的垫片。
    • usage 不需要import,全部自动检测,但需要手动安装@babel/polyfill
      -false:如果你import “@babel/polyfill”,它不会排除掉没有使用的垫片,程序体积庞大

注意

babel的按需导入,是在babel7之后才开始有这个概念的,如果版本在babel7之后的,需要手动升级babel的版本

webpack继承react

  1. 安装 react react-dom
npm install react react-dom --save

2 安装react预设

npm install --save-dev @babel/preset-react
  1. 在.babelrc中配置预设
{
    "presets": [
        [
            "@babel/preset-env",
            {
                  "targets": {
                  
                    "edge": "17",
                    "chrome": "67"
                },
                  "corejs": 2,
                  "useBuiltIns": "usage" 
            }
        ],
        "@babel/preset-react"
    ]
}

相关文章

网友评论

      本文标题:webpack基础(九) Babel处理js

      本文链接:https://www.haomeiwen.com/subject/uolszktx.html