【问题标题】:Which output styles remove multiline line comments?哪些输出样式会删除多行注释?
【发布时间】:2013-05-30 19:30:24
【问题描述】:

在 SCSS 文件中,哪种输出样式 (nested, expanded, compact or compressed) 会从最终 CSS 中删除多行 (/* I'm a comment. */) cmets?

【问题讨论】:

  • 试一试就知道了?

标签: comments sass


【解决方案1】:

: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 中被删除时被保留。

【讨论】:

  • 如果您使用的是 scssphp (leafo.net/scssphp),情况并非如此。无论输出格式化程序如何,都不会删除多行 cmets。
【解决方案2】:

即使输出样式“压缩”,我也无法删除多行 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

【讨论】:

    【解决方案3】:

    很遗憾,我无法对已接受的答案投反对票或发表评论。根据文档,所写和接受的内容是不真实的。 Sass 只删除单行代码并保留多行 cmets。

    Sass 支持带有 /* */ 的标准多行 CSS cmets,以及带有 // 的单行 cmets。多行 cmets 尽可能保留在 CSS 输出中,而单行 cmets 被删除。

    See here for the docs.

    【讨论】:

    • 截至今天,“压缩”确实删除了多行 cmets。
    猜你喜欢
    • 2012-10-15
    • 2015-02-25
    • 2012-06-12
    • 2011-01-28
    • 2023-03-03
    • 1970-01-01
    • 2016-05-21
    • 2019-12-04
    相关资源
    最近更新 更多