<p>//单行注释永不进入CSS,因Less解析阶段即跳过;/ /多行注释虽被Less透传,但常被css-minimizer-webpack-plugin等压缩工具默认删除,需配置preserveComments白名单保留。</p>

// 单行注释永远不进 CSS,别指望它留下任何痕迹
Less 的 // 是纯源码级注释,解析器在 AST 构建前就整行跳过,不生成节点、不参与输出。你写:// 调试用,先禁用 或 color: red; // 主色,编译后连空格都不剩。
常见误判场景:
- 用
// .btn { color: red; }想“临时注释掉选择器”,结果 CSS 里既没样式也没提示 - 在 mixin 调用后加
// 重置基础样式,DevTools 完全看不到这行存在 - 把
// @version: 2.1.0当版本标记,上线后发现产物里空空如也
/* */ 多行注释能进 CSS,但压缩器会静默删掉
/* */ 是标准 CSS 注释,Less 默认透传,但它只是“路过”编译器——真正决定它存不存在的,是下游的压缩工具。
典型删除场景:
立即学习“前端免费学习笔记(深入)”;
- Webpack 项目中
css-minimizer-webpack-plugin默认preserveComments: false - Vite 默认用
cssnano@5+,只保留/*! */(而 Less 不支持这种语法) - 旧版
lessc v3.x若检测到@{version}变量未被实际引用,连带其所在的/* v@{version} */也会被优化掉
让注释真正在线上 CSS 中可见的实操配置
必须同时满足:语法正确 + 压缩器白名单。缺一不可。
关键动作:
- 所有需交付的注释,一律改用
/* */,禁止混用// - Webpack 中,在
css-minimizer-webpack-plugin配置里加:preserveComments: /v\d+\.\d+\.\d+|Copyright|@license/ - 避免孤立变量:把
/* v@{version} */改成/* v@{version} — built @ {@build-time} */,并确保@{version}被实际使用(例如赋给body[data-version]) - 上线前务必
curl your-site.com/style.css直接看产物,别信本地lessc输出
想带文件名或行号?Less 没有 __FILE__ 宏,得靠约定模拟
Less 不提供 __FILE__ 或 __LINE__ 这类预定义宏,@import 后的 /* */ 注释也不会自动补路径信息。
可行做法:
- 每个
.less文件顶部统一定义:@file-name: "header.less"; - 写注释时手动拼接:
/* {@file-name} — line 42 */ - 团队同步该格式,避免有人写
/* header.less L42 */、有人写/* [header] 42 */
注释能不能被看见,从来不是 Less 自己说了算;它是编译链路里最脆弱的一环——写对了语法,配错了压缩器,照样白忙活。


















