【发布时间】:2013-05-30 19:30:24
【问题描述】:
在 SCSS 文件中,哪种输出样式 (nested, expanded, compact or compressed) 会从最终 CSS 中删除多行 (/* I'm a comment. */) cmets?
【问题讨论】:
-
试一试就知道了?
在 SCSS 文件中,哪种输出样式 (nested, expanded, compact or compressed) 会从最终 CSS 中删除多行 (/* I'm a comment. */) cmets?
【问题讨论】:
:compressed 是唯一可以从最终渲染的 CSS 中移除多行 (/* ... */) cmets 的输出样式。
此外, :compact 会将多行注释转换为最终 CSS 中的单行。使用 :nested 和 :expanded,所有多行 cmets 及其换行符都会在最终的 CSS 中呈现。
例如,这个 SCSS:
// SL Comment
/* ML Comment1
Whoop. */
//! SL w/ bang
/*! ML Comment2
Whoop. */
对于每种不同的输出样式都会变成如下的 CSS:
嵌套:
/* ML Comment1
Whoop. */
/* ML Comment2
Whoop. */
扩展:
/* ML Comment1
Whoop. */
/* ML Comment2
Whoop. */
紧凑:
/* ML Comment1 Whoop. */
/* ML Comment2
Whoop. */
压缩:
/* ML Comment2
Whoop. */
以! 开头的评论只会影响:compressed 模式下的多行cmets,否则它们会在最终CSS 中被删除时被保留。
【讨论】:
即使输出样式“压缩”,我也无法删除多行 cmets,sass/scss 文档也建议不删除它们(仅删除带有“//”的单行 cmets) .
我的解决方案是在 sass 生成其最终输出后,简单地应用 Perl 单线从 .css 文件中手动删除 cmets:
sass -fCE utf-8 -t compressed application.sass application.css
perl -pi -e'BEGIN{$/=undef}s#/\*.*?\*/##gs' application.css
【讨论】:
很遗憾,我无法对已接受的答案投反对票或发表评论。根据文档,所写和接受的内容是不真实的。 Sass 只删除单行代码并保留多行 cmets。
Sass 支持带有 /* */ 的标准多行 CSS cmets,以及带有 // 的单行 cmets。多行 cmets 尽可能保留在 CSS 输出中,而单行 cmets 被删除。
【讨论】: