首页 > 其他分享 >[Babel] Intro Babel - 02 Configure file

[Babel] Intro Babel - 02 Configure file

时间:2025-01-16 21:12:09浏览次数:1  
标签:02 选项 babelrc 配置文件 Babel 配置 json Intro babel

配置文件

  • 配置文件格式
  • 配置文件选项

配置文件的格式

在 babel 中,配置文件本身又可以分为两种:

  • 项目范围的配置文件
  • 文件相关配置文件

项目范围配置文件

顾名思义,就是该配置文件针对整个项目生效的一个配置,这种类型的配置文件一般放在项目根目录下面,babel 对项目范围级别的配置文件是有格式要求的,一般是指 babel.config.* 这种格式的配置文件,后面的 * 支持各种类型的扩展名:.json .js .cjs .mjs .cts ...

  • babel.config.js ✅
  • babel.config.json ✅
  • .babelrc ❌

文件相关配置文件

这种类型的配置文件就是对特定的文件或者特定的目录以及子目录生效。在 babel 中,如下格式的配置文件是文件级别:

  • .babelrc.* (.json .js .cjs .mjs .cts)
    • .babelrc.js
    • .babelrc.json
  • .babelrc
  • package.json 文件里面的 babel 键

接下来我们来看一个结构示例:

/my-project
|-- frontend
|   |-- .babelrc.json
|   |-- src
|-- backend
|   |-- .babelrc.json
|   |-- src
|-- babel.config.json

假设 babel.config.json 配置如下:

{
  "presets": [
    "@babel/preset-env"
  ]
}

上面配置文件中所指定的预设,会在整个项目中国都被用到。

假设 frontend/.babelrc.json 有如下的配置:

{
  "plugins": [
    "@babel/plugin-transform-react-jsx"
  ]
}

该配置就只会在 frontend 目录范围内生效。babel 在对 frontend 目录下的文件进行编译的时候,会自动的去合并多个 babel 配置文件,最终 frontend 目录下的文件在进行编译的时候,就会使用 @babel/preset-env 预设以及 @babel/plugin-transform-react-jsx 这个插件。

配置文件选项

有关 babel 配置文件所支持的配置项有哪些,可以在官网的 https://babeljs.io/docs/options 看到。

所支持的配置项还是比较多,官方进行一个简单的分类:

  • 主要选项
  • 配置加载选项
  • 插件和预设配置
  • 输出目标选项
  • 配置合并选项
  • 源码映射选项
  • 其他选项
  • 代码生成器选项
  • AMD / UMD / SystemJS 选项
  • 选项概念

这里我们不需要一开始就对所有的配置项完全掌握,下面我们就介绍一些常见的配置项。

插件和预设配置

  • plugins:对应的值为一个数组,配置要使用的插件,可以配置多个,注意在配置文件中配置的插件需要提前进行安装
{
  "plugins": [["@babel/plugin-transform-arrow-functions", {}]]
}
  • presets:配置一个预设,对应的值也是一个数组,表示可以配置多个
{
  "presets": ["@babel/preset-env"]
}

输出目标选项

  • targets: 该配置项目用于指定要兼容的浏览器版本范围
{
  "targets": "> 0.25%, not dead"
}

关于指定浏览器范围,有多种多样的形式,例如可以在项目根目录下创建一个 .browserslistrc 配置文件来指定范围,也可以在 package.json 中通过 browserslist 这个键来指定范围。

优先级顺序如下:

  1. targets
  2. .browserslistrc
  3. package.json
  • browserlistConfigFile:默认值是 true,表示允许 babel 去搜寻项目中和 browserlist 相关的配置。例如 babel 配置文件中没有 targets 的配置,但是项目中有 .browserslistrc 这个文件,里面指定了浏览器范围,那么 babel 在进行编译的时候,会去搜索和 browserlist 相关的配置,并在编译的时候应用对应的浏览器范围配置。这个配置对应的值还可以是一个字符串形式的路径,该路径就指定了具体的 browserlist 文件的位置
{
  "presets": [
    ["@babel/preset-env", {
      "browserslistConfigFile": "./.browserslistrc"
    }]
  ]
}

配置合并选项

  • extends:允许你扩展其他的 babel 配置文件,你可以提供一个路径,该路径对应的 babel 配置文件就会作为基础的配置
{
  "extends": "./base.babelrc.json"
}
  • env:为你不同的环境提供不同的配置,例如在开发环境或者生成环境需要使用不同的插件或者预设,那么就可以通过 env 来指定环境。
{
  "env": {
    "development": {
      "plugins": ["pluginA"]
    },
    "production": {
      "plugins": ["pluginB"]
    }
  }
}
  • overrides :该配置项用于对匹配上的特定文件或者目录应用不同的配置
    • test:做匹配
    • include:包含哪些目录
    • exclude:排除哪些目录
{
  "overrides": [
    {
      "test": ["*.ts", "*.tsx"],
      "exclude": "node_modules",
      "presets": ["@babel/preset-typescript"]
    }
  ]
}
  • ignore 和 only :ignore 控制忽略文件,only 指定特有文件
{
  "ignore": ["node_modules"],
  "only": ["src"]
}

源码映射选项

  • sourceMaps:告诉 babel 是否要生成 source map
{
 "sourceMaps": true
}
  • sourceFileName:指定 source map 文件的文件名
{
 "sourceFileName": "customFileName.js"
}
  • sourceRoot:source map 文件对应的 URL 前缀
{
  "sourceMaps": true,
  "sourceRoot": "/root/path/to/source/files/" // 前缀
}

其他选项

  • sourceType:指定 babel 应该如何去解析 js 代码

    • module:如果你的代码使用的 ESM 模块化,里面涉及到了 export 、import,那么应该指定为这个值
    • script:普通的 JS 脚本,没有使用模块化
    • unambiguous:让 babel 自己来判断,babel 检查到你的代码使用了 export 、 import,就会视为模块文件,否则就会视为普通的 script 脚本
  • assumptions:从 babel 7.13.0 开始引入的一项配置项,让开发者对自己的代码做一个假定(更像是对 babel 的一个承诺)

{
  "assumptions": {
    "noClassCalls": true
  }
}

上面配置表示我的代码中不会直接调用类(不会像调用函数一样去调用类),babel 就可以省略生成检查类是否被正确调用的代码。

标签:02,选项,babelrc,配置文件,Babel,配置,json,Intro,babel
From: https://www.cnblogs.com/Answer1215/p/18675731

相关文章

  • Linux基础02:+文件系统+ 目录操作+ 文件操作+ 存储转换
    内容提要文件系统目录操作文件操作存储转换文件系统Linux本质就是一个文件系统,Linux文件系统是操作系统组织、存取、保存数据的一种手段,整体采用层级式的倒状目录结构。倒树状结构中的目录/:根目录,Linux中的绝对路径就是由这个开始的/bin:主要存放系统的普通指令......
  • [Babel] Intro Babel - 03. CLI
    CLI关于babel所提供的CLI,你可以在https://babeljs.io/docs/babel-cli看到所有所支持的CLI命令。要使用CLI命令,首先第一步是安装:pnpmadd--save-dev@babel/core@babel/cli注意在安装@babel/cli这个包的时候,需要同时安装@babel/core这个包,这个包是提供babel......
  • Babel Intro Babel - 01 Introduction
    Babel介绍Babel是一个编译器,主要用于将最新的JavaScript代码转化为向后兼容的代码,以便在老版本的浏览器或环境中运行。例如,你可能在开发时使用了ES6、ES7或者更高级的JavaScript特性,但是有些浏览器可能并不支持这些新特性,这时就可以用Babel来将代码转化为ES5或者更早......
  • 【前端框架】2025 React 状态管理终极指南!
    全文约10800字,预计阅读需要30分钟。React作为当下最受欢迎的前端框架,在构建复杂且交互丰富的应用时,状态管理无疑是至关重要的一环。从简单的本地状态,到能让多个组件协同工作的全局状态,再到涉及服务器通信、导航切换、表单操作以及持久化存储等不同场景下的状态管理,每一个方面......
  • 2025省选模拟6
    2025省选模拟6T1、圣诞树原cf140E先说60pts做法:首先考虑如何处理两层之间的转移。每两层之间我们只需要用总方案数减去两层重合的方案数即可,对于两层重合的方案数,我们其实并不需要知道具体集合是什么,只需要知道集合的大小,然后乘上一个组合数即可,所以我们需要知道不考虑......
  • 2025 省选模拟 6
    2025省选模拟6A.圣诞树DP,计数题考虑题目题目的两个限制相邻两层彩球颜色集合不同同层相邻两个彩球颜色不同发现求出每一行恰好\(j\)个颜色后第二个限制很简单就解决了。设\(f_{i,j}\)表示长度为\(i\)时恰好有\(j\)个颜色的方案数(对于一行考虑)设\(g_{i,j}......
  • Linux基础02天:文件操作
    Linux基础:第02天笔记内容提要文件系统目录操作文件操作文件系统Linux本质上就是一个文件系统,Linux文件系统是做系统组织,存取,保存数据的一种手段。整体采用层级式的倒状目录结构。倒树状结构中的目录/:根目录,Linux中的绝对路径就是从这个开始的/bin:主要存放系统的普......
  • 2024年企业常用项目管理软件综合点评
    最近越来越多的小伙伴在咨询有没有一些项目管理软件推荐,那么本期内容就对一些企业常用的项目管理软件做一个综合点评,分为通用型项目管理软件以及产品研发项目管理两大类,主要从产品简介、适用行业、主要功能、优势不足以及网友使用评价这几个维度来全面展开,快来看下哪款软件更适合......
  • 2025年专精特新小巨人认定条件(小巨人企业申报要求)
    专精特新“小巨人”企业的认定工作备受关注,申报成功不仅意味着企业将获得国家层面的认可,还能享受一系列政策支持,进一步提升市场竞争力和品牌影响力。那么,究竟什么是专精特新“小巨人”?2025年专精特新小巨人认定条件和流程又是如何规定的呢?本文华夏泰科将从这些方面进行详细解......
  • 2024年安徽省中银杯省赛网络系统管理比赛
    S1hostnameS1!spanning-treemoderstpspanning-treemst0priority4096spanning-tree!nocwmp!servicedhcp!ipdhcppoolpool_APoption138ip11.1.0.20411.1.0.205network172.17.10.0255.255.255.0default-router172.17.10.254!ipdhcppool......