// 注释必然消失,/ / 注释本该保留但常被压缩工具删除:前者在 less 解析阶段被跳过不生成 ast,后者经 less 透传后由 css-minimizer 或 cssnano 等压缩器默认移除,需显式配置 preservecomments 或 removecomments 才能保留。

会消失,但取决于你用的是 // 还是 /* */ —— 前者必然消失,后者“本该保留”,但大概率被构建工具删掉。
为什么 // 注释永远进不了 CSS
// 是 Less 源码级注释,编译器在解析阶段就整行跳过,不生成 AST 节点,也不输出任何内容。它和 JS 里的 // 一样,纯供人看,对最终 CSS 零影响。
- 写
// .btn { color: red; },编译后既没样式也没注释,不是“注释掉了”,而是这行压根没被解析 -
color: red; // 主色这种行尾注释同样消失,上线后无法辅助排查 - 嵌套 mixin 里写
// debug: true,编译后连空格都不剩,sourcemap 也定位不到
为什么 /* */ 注释经常“看似消失”
/* */ 是 CSS 原生语法,Less 编译器原样透传,但它只是“过了 Less 这关”。真正删它的,是后续的 CSS 压缩器(比如 css-minimizer-webpack-plugin 或 cssnano)。
- Webpack 默认开启
minimize: true时,css-minimizer-webpack-plugin的preserveComments默认为false - Vite 默认用
cssnano,v5+ 版本默认移除所有非/*! */注释(注意:Less 不支持/*! */语法) - 旧版
lessc(v3.x)若检测到@{version}变量未被实际引用,连带/* v@{version} */也会被优化掉
如何让 /* */ 真正保留在最终 CSS 里
必须在压缩器配置中显式声明保留策略,不能只靠写对语法。
- Webpack 中,在
css-minimizer-webpack-plugin配置里加:preserveComments: /v\d+\.\d+\.\d+|Copyright|@license/ - Vite 中若用
cssnano,需在vite.config.ts的cssnanoOptions中设removeComments: false或配正则白名单 - 避免孤立变量:把
/* v@{version} */改成/* v@{version} — built @ {date} */,并确保@{version}在当前作用域被真实引用(比如赋给body[data-version])
最容易被忽略的点是:以为写了 /* */ 就万事大吉,结果它倒在打包环节;或者误用 // 当“安全注释”,上线后关键说明全无踪迹。两个环节——Less 编译、CSS 压缩——少一个配置,注释就没了。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











