关键在于Babel、ESLint、Prettier各司其职:Babel负责转译,ESLint检查逻辑质量(需配@babel/eslint-parser确保解析一致),Prettier格式化源码;所有检查与格式化均作用于src/源码,严禁处理编译产物。

要让 Babel 编译前后的 JavaScript 代码在风格和质量上保持一致,关键不是让 Babel “做规范”,而是让它与 ESLint、Prettier 各司其职、无缝衔接:Babel 负责转译(如 ES6+ → ES5),ESLint 负责检查逻辑与质量,Prettier 负责统一格式。三者协同的核心在于“检查时机”和“输入源一致性”。
Babel 不参与规范检查,但必须对齐解析能力
ESLint 默认使用 Espree 解析器,而 Babel 处理的是现代语法(如可选链、top-level await、React JSX)。若 ESLint 无法正确解析 Babel 支持的语法,就会漏检或报错——这会导致“编译前没问题,ESLint 却报错”,破坏统一性。
- 安装并配置 @babel/eslint-parser 替代默认解析器
- 在
.eslintrc.js中明确指定:
parserOptions: {
requireConfigFile: false,
babelOptions: { presets: ['@babel/preset-env'] }
}
这样 ESLint 就能准确理解 Babel 实际处理的代码结构,确保 AST 分析与编译行为一致。
ESLint 规则需覆盖 Babel 输出的“真实运行时代码”
Babel 编译后可能引入 helper 函数(如 _classCallCheck)、polyfill 插入或模块转换。这些代码虽由工具生成,但最终会进入生产环境,也应受质量约束。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- 启用 no-undef 和 no-unused-vars,防止 Babel 注入的辅助变量未被识别
- 对生成代码中常见模式做白名单处理(例如允许 Babel 自动注入的
regeneratorRuntime) - 在
env中补全目标环境(如es2015,node),避免因环境假设偏差导致规则误判
Prettier 格式化应在 Babel 转译前完成
这是最容易出错的一环:如果先用 Babel 编译再格式化,你会得到一堆被转译后、带大量 _slicedToArray 等 helper 的代码,Prettier 对这类代码的可读性优化有限,且格式结果不可控。
- 所有开发阶段的格式化、保存自动修复、CI 检查,都只作用于 源码(src/),而非编译产物(dist/ 或 .babelrc 输出目录)
- 确保
prettier --write和eslint --fix命令的目标路径不包含构建产出文件 - 在
.prettierignore中加入dist/**,lib/**,.babelrc.js等非源码路径
构建流程中插入校验环节,堵住“编译绕过规范”的漏洞
仅靠编辑器保存格式化无法保障提交质量。需在 Babel 构建前加一道门禁:
- 用 lint-staged + Husky 在 git commit 前检查并修复暂存区的源码
- 在 CI 脚本中,先运行
eslint src/**/*.{js,jsx,ts,tsx},再执行babel src -d lib - 可选:用 @babel/plugin-transform-runtime 避免污染全局作用域,间接减少 ESLint 对污染型 polyfill 的误报

















