Babel 是将新标准 JS 语法(如 ES2025+、JSX、TypeScript)转译为旧版兼容代码(如 ES5)的编译器,不执行代码仅做语法转换;需安装核心包、配置 babel.config.json 指定 targets、添加 build 脚本;扩展支持需额外 preset/plugin,且不处理 polyfill。
Babel 是一个 JavaScript 编译器,核心作用是把**新标准的 JS 语法(如 ES2025+)和特性(如 JSX、TypeScript)转译成当前浏览器或运行环境能理解的旧版本代码(通常是 ES5)**,解决兼容性问题。它不执行代码,只做语法转换,比如把箭头函数 () => {} 变成 function() {},把可选链 a?.b 变成安全判断逻辑。
现代 JS 新特性(如 let/const、模块化、装饰器、top-level await)在老版浏览器或某些 Node.js 版本中不被支持。Babel 让你用最新的写法开发,同时保证代码能在目标环境中正常运行。
以项目级配置为例(基于 Babel 7+):
npm install --save-dev @babel/core @babel/cli @babel/preset-env
babel.config.json(放在项目根目录):{
"presets": [
["@babel/preset-env", {
"targets": {
"browsers": ["> 1%", "last 2 versions", "not dead"]
}
}]
]
}
这表示:只转译那些在“全球使用率超 1%、主流浏览器最新两版、且未被厂商放弃”的环境中不支持的语法。package.json:"scripts": {
"build": "babel src --out-dir lib --extensions '.js,.jsx'"
}
运行 npm run build 就会把 src/ 下的 JS/JSX 文件编译输出到 lib/。默认 @babel/preset-env 只处理标准 JS 语法。如果要用 React、TypeScript 或实验性功能,需额外加 preset 或 plugin:
@babel/preset-react,支持 JSX 和 React 17+ 的自动运行时@babel/preset-typescript(注意:Babel 不做类型检查,TS 类型需靠 tsc 或 IDE 处理)@babel/plugin-proposal-decorators,并按规范设置 legacy: true 或 version: "2025-05"
单独用 CLI 较少,实际项目中常集成到 Webpack、Vite 或 Rollup 中:
babel-loader,在 module.rules 中指定 JS 文件走 Babel 处理babel.config.js 中声明 preset 即可生效Promise、Array.from)。需要时用 @babel/polyfill(已废弃)或更推荐的 core-
js + regenerator-runtime 手动导入配置本身不复杂,关键在明确目标环境、合理选择 preset 和 plugin,避免过度转译影响体积和性能。