编译后是否保留注释取决于注释语法:/*...*/ 保留在所有模式中,/*!...*/ 在压缩模式下强制保留,// 仅存在于源码中且编译时完全删除。
编译后是否保留注释,完全取决于你用哪种语法写——不是配置项,也不是编译参数能改的。
这种写法和原生 CSS 一致,Sass 默认原样透传。无论你用 sass --style expanded 还是 --style compressed,只要没手动删掉,它就留在生成的 .css 文件里。
常见错误现象:误以为压缩模式会自动剔除所有 /* ... */,结果上线后发现版权信息或调试说明被删了——其实不是被删,是你根本没用这种注释。
! 变成 /*! ... */(见下一条)这是唯一一种能“穿透” --style compressed 的注释。Sass 编译器识别 /*! 开头就认为是“不可删”的元信息,比如许可证、版本号、作者声明。
立即学习“前端免费学习笔记(深入)”;
使用场景:CSS 文件顶部放 MIT 协议声明、公司内部组件库的版本水印、第三方依赖的归属标注。
/ 后跟 !,中间不能有空格:/*! 版权所有 */ ✅,/* ! 版权所有 */ ❌/*! */,生产包体积就多几个字节,积少成多// 是 Sass 自己的语法糖,编译时整行直接扔掉,连空格都不留。它不生成任何 CSS 内容,也不进 sourcemap 的原始位置映射。
容易踩的坑:有人把 // 当成“临时禁用代码”,结果删掉后发现样式异常——其实是注释掉了关键变量赋值或 @include,而自己没意识到它根本没参与编译。
//)真正难的是权衡:要不要让团队看到源码里的 // 提示?要不要让客户看到 CSS 里的 /* 文档?这些不是语法问题,是协作约定问题。一旦定下规则,就得靠 lint 工具(比如 stylelint-scss)守住边界,而不是靠人眼检查。