babel 默认移除注释,但可通过配置 comments: true 保留有意义的注释(如函数前 // @deprecated 或变量上方说明),嵌入表达式中间的注释仍可能丢失,需配合插件或构建流程精细控制。

默认情况下,Babel 会移除源码中的注释(包括行注释 // 和块注释 /* */),但可以通过配置保留它们。
启用注释保留选项
Babel 提供了 comments 配置项,控制是否在输出中保留注释。将其设为 true 即可保留原始注释:
- 在
.babelrc或babel.config.js中设置:{"comments": true} - 若使用 CLI,可通过
--comments参数启用:babel src --out-dir lib --comments
注意注释位置与生成逻辑
即使开启 comments: true,Babel 也不会无条件保留所有注释。它只保留“有意义”的注释,例如:
- 紧跟在 AST 节点前或后的注释(如函数声明前的
// @deprecated) - 被 Babel 解析器识别并挂载到对应节点上的注释
- 独立成行、未被语法结构吞掉的注释(如变量声明上方的说明)
而嵌入在表达式中间或被转换逻辑覆盖的注释(如箭头函数参数括号内的注释)可能丢失。
配合其他工具增强注释控制
若需更精细管理(如保留特定标记注释、过滤调试注释),可结合插件:
-
@babel/plugin-transform-react-jsx等插件自身支持注释透传,无需额外配置 - 使用
@babel/plugin-syntax-flow或 TypeScript 插件时,类型注释(如// @ts-ignore)通常会被保留 - 如需自动清理某类注释(如 TODO),可用自定义插件或构建前用正则预处理
验证输出结果
编译后检查生成代码是否含预期注释:
- 确保输入文件中注释格式规范(避免错位或嵌套不合法)
- 确认未启用压缩类插件(如
@babel/preset-env的loose模式一般不影响注释,但某些精简插件会主动删注释) - 若用 Webpack + babel-loader,需在 loader 配置中显式传入
comments: true
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











