预设(Presets) · Babel 中文文档

IE6模块化方案Ruby‘s Louvre:沙箱隔离与语义化版本加载 模块化是前端工程化的基石概念,其核心原理在于依赖管理、作用域隔离与按需加载。在缺乏原生ES模块和现代构建工具的时代,兼容性倒逼出以iframe沙箱、自定义解析器和确定性哈希标识为代表的技术路径。这类方案不仅承载了政企系统在IE6等老旧环境下的生存需求,更深刻体现了模块化本质——通过运行时隔离保障稳定性,借助语义化版本控制实现可维护性。典型应用场景包括银行网银控件集成、政务内网系统升级及存量JSP页面渐进式改造。Ruby's Louvre正是这一技术脉络中极具代表性的实践范本,其沙箱机制与版本解析逻辑至今仍为 阅读详情

不想自己动手组合插件?没问题!preset 可以作为 Babel 插件的组合,甚至可以作为可以共享的 options 配置。

📖 去Js中文网 -前端进阶资源教程,上查看本手册体验更佳

官方 Preset

我们已经针对常用环境编写了一些 preset:

许多由社区维护的 preset 可以从 npm 上获取!

Stage-X (实验性质的 Presets)

stage-x preset 中的语法转换会随着被批准为 JavaScript 新版本的组成部分而进行相应的改变(例如 ES6/ES2015)。

Js中文网 - 前端进阶资源教程 www.javascriptC.com ,Babel中文文档
一个致力于帮助开发者用代码改变世界为使命的平台

Subject to change

这些提案可能会有变化,因此,特别是处于 stage-3 之前的任何提案,请务必谨慎使用。我们计划在每次 TC39 会议之后,如果有可能,在提案变更时更新 stage-x 的 preset。

TC39 将提案分为以下几个阶段:

  • Stage 0 - 设想(Strawman):只是一个想法,可能有 Babel插件。
  • Stage 1 - 建议(Proposal):这是值得跟进的。
  • Stage 2 - 草案(Draft):初始规范。
  • Stage 3 - 候选(Candidate):完成规范并在浏览器上初步实现。
  • Stage 4 - 完成(Finished):将添加到下一个年度版本发布中。

有关详细信息,请务必查看 current TC39 proposals 及其 process document。

TC39 各阶段的流程也在一些文章中有详细的解释,在 Yehuda Katz (@wycatz) 的 thefeedbackloop.xyz网站上:Stage 0 and 1、Stage 2、Stage 3

创建 Preset

如需创建一个自己的 preset,只需导出一份配置即可。

可以是返回一个插件数组…

 js
module.exports = function() {
  return {
    plugins: [
      "pluginA",
      "pluginB",
      "pluginC",
    ]
  };
}


preset 可以包含其他的 preset,以及带有参数的插件。

 js
module.exports = () => ({
  presets: [
    require("@babel/preset-env"),
  ],
  plugins: [
    [require("@babel/plugin-proposal-class-properties"), { loose: true }],
    require("@babel/plugin-proposal-object-rest-spread"),
  ],
});


有关更多信息,请参考 babel 手册 中关于 preset 的部分。

Preset 的路径

如果 preset 在 npm 上,你可以输入 preset 的名称,babel 将检查是否已经将其安装到 node_modules 目录下了

 json
{
  "presets": ["babel-preset-myPreset"]
}


你还可以指定指向 preset 的绝对或相对路径。

 json
{
  "presets": ["./myProject/myPreset"]
}


Preset 的短名称

如果 preset 名称的前缀为 babel-preset-,你还可以使用它的短名称:

 js
{
  "presets": [
    "myPreset",
    "babel-preset-myPreset" // equivalent
  ]
}


这也适用于带有冠名(scope)的 preset:

 js
{
  "presets": [
    "@org/babel-preset-name",
    "@org/name" // equivalent
  ]
}


Preset 的排列顺序

Preset 是逆序排列的(从后往前)。

 json
{
  "presets": [
    "a",
    "b",
    "c"
  ]
}


将按如下顺序执行: c、b 然后是 a。

这主要是为了确保向后兼容,由于大多数用户将 “es2015” 放在 “stage-0” 之前。

Preset 的参数

插件和 preset 都可以接受参数,参数由插件名和参数对象组成一个数组,可以在配置文件中设置。

如果不指定参数,下面这几种形式都是一样的:

 json
{
  "presets": [
    "presetA",
    ["presetA"],
    ["presetA", {}],
  ]
}


要指定参数,请传递一个以参数名作为键(key)的对象。

 json
{
  "presets": [
    ["@babel/preset-env", {
      "loose": true,
      "modules": false
    }]
  ]
}


推荐阅读:

领略前端前沿,关注IT平头哥联盟,做有温度的攻城狮!,公众号:honeyBadger8

来源:Js中文网 - 前端进阶资源教程
链接:https://www.javascriptc.com/docs/babel-manual/presets

JS & 介绍 Babel 的使用及 presets & plugins 的概念 Babel 给 ES6/7/8/9 Typescript、React / Vue3 JSX 等"语法糖"带来无限的可能。 阅读详情

相关推荐

babel实战之预设(Presets)

1.简介 不想自己动手组合插件?没问题!preset 可以作为 Babel 插件的组合,甚至可以作为可以共享的options配置。 2.官方 Preset 我们已经针对常用环境编写了一些 preset: @babel/preset-env @babel/preset-flow @babel/preset-react @babel/preset-typescript 3.Stage-X(实验性质的 Presets) stage-x preset 中的任何...

蛐蛐的博客 1351

十五分钟的Babel入门指南

十五分钟学会babel配置,不亏。

weixin_43554584的博客 1218

10分钟快速搭建OpenClaw(基于Windows+飞书)

OpenClaw 是一款功能强大的 AI 智能体工具,能够帮助用户管理邮件、日历等日常事务。本文详细介绍了在 Windows11 系统上安装和配置 OpenClaw 的完整步骤,包括 Node.js 环境搭建、Git 安装、OpenClaw 部署以及飞书机器人创建与对接。通过简单的命令行操作和可视化界面配置,用户可以快速完成 AI 助手部署,实现智能办公自动化。文中还提供了飞书机器人权限设置等关键环节的图文指引,帮助用户轻松完成系统集成。

Hello, New World! 2927

谈谈babel的preset-env

@babel/preset-env在官网介绍是一款自动管理浏览器版本和babel语法转换插件映射的一款工具。其中浏览器版本管理默认使用的是browserslist,可以通过browserslist的相关配置去指定需要兼容的浏览器版本列表。 @babel/preset-env会在编译的时候自动匹配需要使用哪些plugins去转换的你代码,默认会纳入该 @babel/preset-env版本发布前的ECMAScript的stage4提案内容。

蜡笔小开心❤的博客 703

基于深度学习的中文方言识别模型训练实战

本文介绍了一个基于深度学习的中文方言识别模型开发流程。项目采用PyTorch框架和Chinese-BERT-wwm预训练模型,构建了包含BERT基础层、方言特征增强层和注意力机制的多方言分类系统。文中详细阐述了数据收集策略,包括从社交媒体、语料库和众包平台获取多源数据,并实现了文本清洗、同义词替换和回译等数据增强技术。模型架构部分展示了如何在BERT基础上添加方言特征提取层和多头注意力机制来提升识别性能。该方案支持普通话、粤语等6种主要方言的识别,目标准确率达90%以上,响应时间小于100ms,适用于智能客

电脑管家 1736

手把手教你用C#和LibUsbDotNet实现USB设备通信(含完整代码示例)

本文详细介绍了如何使用C#和LibUsbDotNet库实现USB设备通信,包括设备识别、连接建立、同步/异步数据读写等核心操作。通过完整的代码示例,开发者可以快速掌握USB通信的关键技术,适用于工业自动化、医疗设备等多种场景。重点讲解了数据读写优化和错误处理技巧,帮助提升通信效率和可靠性。

a3b4c5的博客 707

项目配置Babel

babel配置项

caiqian97的博客 1780

CloudCompare点云变换保姆级教程:从平移、旋转到绕任意点旋转,一次搞定

本文提供CloudCompare点云变换的全面教程,涵盖从基础平移、旋转到绕任意点旋转的高级技巧。通过详细的操作步骤和实战案例,帮助用户掌握点云数据处理的核心技能,提升三维模型对齐和变换的效率与精度。

weixin_28717969的博客 291

Babel配置中的presets、plugins、各个阶段stage的含义

什么是Babel Babel 官方文档: https://babeljs.io/ Babel中文文档:https://www.babeljs.cn/ 我们知道各个浏览器对JavaScript版本的支持各不相同,很多新的语法无法直接在浏览器中运行,为了解决这个“沟通不畅”的问题,所以就有了Babel,Babel主要用于将 ECMAScript 2015+ 版本的代码转换为向...

algor1234567的博客 1923

HIC测序数据生信分析——第三节,HIC数据挂载

(取决于是否运行①prune模块,若①运行,则③运行;#HIC预处理后的比对文件Unknown_BM942-001H0001_1_val_1.Unknown_BM942-001H0001_2_val_2.hicup.bam 和contig基因组序列文件genome.fa。#HIC预处理后的比对文件Unknown_BM942-001H0001_1_val_1.Unknown_BM942-001H0001_2_val_2.hicup.bam 和contig基因组序列文件genome.fa。#这个方法简单一点。

weixin_44616693的博客 3602

CAPL编程的催化剂——CAPLdll的实现

CANoe作为一款功能强大的总线开发及测试工具,不仅仅是因为其丰富的库函数,最重要的是其兼容了多种编程语言,可以实现灵活的开发,极大的解决了纯CAPL编程所带来的限制,如通过动态链接库(DLL)来实现复杂函数的编写,使其能够在CAPL中可以调用,下面将对DLL的实现进行分析。capldll.cpp这个文件初看相当复杂,从整体上来说,这段代码主要包含了两部分:自定义函数实现和回调函数定义,今天的主要任务是实现自定义函数,这里的函数定义与普通函数定义差不多,只是利用了CAPL的格式。在VS2017工程中打开。

车载控制器AutoSAR软件开发工程师 4649

Node.js语法错误排查:Unexpected token ... 的根源与解决方案

在JavaScript开发中,语法错误是常见的调试难点,尤其是当代码在解析阶段就遇到无法识别的标记时。这类错误通常源于运行环境的JavaScript引擎版本与代码中使用的ECMAScript语法特性不匹配。ECMAScript标准每年都会引入新的语法特性,例如ES2015(ES6)中引入的展开运算符(Spread Operator)和剩余参数(Rest Parameters),它们在现代前端工程化和Node.js服务端开发中广泛应用。如果运行环境的Node.js版本过低,其捆绑的V8引擎可能无法解析这些新语

chuange6363的博客 499

MATLAB代码实现了船舶航线优化的功能,使用混合遗传算法(结合模拟退火算法)来寻找从大连港到格拉斯通港的最优航线,同时考虑了船舶的参数、气象数据(风速、风向、有效波高、波浪阻力系数等)对航行的影响

这段MATLAB代码主要实现了船舶航线优化的功能,使用混合遗传算法(结合模拟退火算法)来寻找从大连港到格拉斯通港的最优航线,同时考虑了船舶的参数、气象数据(风速、风向、有效波高、波浪阻力系数等)对航行的影响。通过以上步骤,该代码能够找到一条在考虑船舶性能和气象条件下,从大连港到格拉斯通港的较优航线,最小化燃油消耗和航行时间的加权和。

AI的内部世界的博客 513

Vue 2项目ElementUI实战:从环境搭建到性能优化全解析

在Vue.js生态中,组件库是构建中后台应用、提升开发效率的核心工具。其原理在于通过封装可复用的UI组件,遵循统一的设计规范,实现快速界面搭建。这类库的技术价值在于大幅降低开发成本、保证视觉一致性,并提升团队协作效率。ElementUI作为基于Vue 2的经典UI组件库,凭借其丰富的组件(如表单、表格、布局系统)和详尽的中文文档,成为众多后台管理系统开发的首选。其应用场景广泛覆盖运营后台、数据管理平台等需要快速产出专业界面的项目。本文聚焦于ElementUI的实战应用,深入解析其两种核心引入方式:通过NPM

weixin_30314813的博客 399

AI上推荐 之 协同过滤

㐇

Miracle8070 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

包管理工具(npm、pnpm、yarn、cnpm)、版本管理工具(nvm、fnm)

包管理工具(npm、pnpm、yarn、cnpm)、版本管理工具(nvm、fnm)

freeking101的博客 4万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Babel 从入门到精通(二):Plugin插件和Preset预设配置详解

在现代 JavaScript 开发中,Babel 是一个不可或缺的工具。它帮助我们将现代的、高级的 JavaScript 代码转换成在各种浏览器都能运行的旧版 JavaScript 代码。Babel 的强大源于其灵活的插件系统和方便的 preset 配置。那么,插件和 preset 究竟有什么区别,它们的存在目的是什么,又该如何使用呢?今天我们就来通俗易懂地讲解一下。Babel 插件是一些独立的模块,它们负责具体的代码转换工作。每个插件都有自己明确的职责,比如转换箭头函数、类、模板字符串等等。

乐闻世界 1245

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

关于Babel的使用

Babel是一个Javascript编辑器 目的是使代码可以兼容不能运行高版本Js的浏览器 首先安装node 这是个基于Chrome V8引擎的Javascript运行环境 安装cnpm 这个快 相当于国内的应用商店 用的是淘宝的镜像 npm就是国外的应用商店 下载慢 安装babel cnpm i -D(--save-dev) babel-cli 我们新建一个entry.j...

qq_41296374的博客 271

babel-预设和插件

一、配置文件 几乎所有的前端工程师都知道可以用babel将es6+的语法转换为es5,转换工具要么使用babel-cli,要么使用webpack的babel-loader,不管使用哪种转换工具,通常都需要一个配置文件来建立转换规则(也可以在webpack的babel-loader的配置项,原理都一样)。 babel执行时默认从当前目录查找配置文件,支持的配置文件格式有:.babelrc,.babelrc.js,babel.config.js和package.json。它们的配置项都是相同,作用也是一样的

2023年最新地推相关信息 2079

Invalid: `{ presets: [{option: value}] }` Valid: `{ presets: [[‘presetName‘, {option: value}]] }

nuxt启动项目报错。

风烟 635

Babel的presets和plugins笔记

Babel是一个工具链,主要用于将ECMAScript 2015+版本的代码转换为向后兼容的JavaScript语法,以便能够运行在当前和旧版本的浏览器或其他环境中。 常用的preset 1.babel-preset-env: 用于编译es6语法, 是一个新的 preset,可以根据配置的目标运行环境(environment)自动启用需要的 babel 插件。 2.babel-preset-es2...

virgo_ling的博客 754

【Webpack】Babel 配置详解

Babel 是一个 JavaScript 编译器,主要用于将现代 JavaScript(如 ES6+、TypeScript)代码转换为兼容性更广泛的旧版本 JavaScript(通常是 ES5)。这样做可以确保代码在较旧的浏览器或环境中也能正常运行。Webpack 与 Babel 的结合是现代 JavaScript 应用开发中不可或缺的一部分。Babel 提供了强大的代码转换能力,使开发者可以使用最新的 JavaScript 特性,同时保证代码在较旧的环境中也能正常运行。

lph159的博客 3017

babel的plugins和presets解析

babel可以将当前运行平台(浏览器、node服务器)尚不支持的下一代或几代js语法编译为当前支持的js语法版本,比如可以把es6 es7和es8的js代码编译为es5的代码。 需要明确的几个概念: es2015 === es6 es2016 === es7 es2017 === es8 plugin: babel的插件,在6.x版本之后babel必...

weixin_33766168的博客 296

nodejs 012:Babel(巴别塔)语言转换与代码兼容

【代码】nodejs 012:Babel(巴别塔)语言转换与代码兼容。

ResumeProject的博客 1955

【亲测免费】 Vue.js 的 Babel 预设:babel-preset-vue 指南

Vue.js 的 Babel 预设:babel-preset-vue 指南 1. 项目介绍 babel-preset-vue 是一个专为 Vue.js 应用程序设计的 Babel 预设,它包含了处理 Vue.js 特性的配置。此预设旨在简化 Vue.js 开发中的转译步骤,确保你的 Vue SFC(单文件组件)可以在不同环境中正常工作。通过使用这个预设,你可以轻松地将 ES6+、Vue.js 语法...

gitblog_01037的博客 1493

babel查找并加载plugin和preset

项目的配置文件 .babel.config._ 或者 .babelrc._根据命令经过**@babel/cli**定位到下的文件。

抱着肩膀笑看看 1386
上一篇: 插件 · Babel 中文文档
下一篇: 常见问题 · Babel 中文文档
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值