如何在Sass中忽略多行注释?

8
有没有办法让Sass在生成CSS文件时忽略多行注释:
// these comments are ignored

这些内容不仅在压缩模式下被忽略:

/*
 * multiline comments
 *
 */

我在Github上找到了这个问题单,其中作者说:

如果你真的想要,你可以给Sass打补丁来消除/* */注释。

但我不知道他所说的“给Sass打补丁”是什么意思,那么我该如何做?

1
由于您的所有生产CSS都将被压缩/缩小,出于好奇,为什么您需要这个功能呢? - bookcasey
如果您使用“压缩”输出格式,则生成的CSS中将不会包含任何注释。 - cimmanon
@bookcasey 是的,我知道,但我还想要一个压缩和扩展版本的CSS文件,没有注释可以分发它们,当前生成的文件包含不需要的和不在正确位置的注释,并且我有许多导入的Sass文件。 - Pierre
我知道这是可以绕过的,但我想保留这些注释在原始的Sass文件中。 - Pierre
2个回答

19

哇,回答这个问题的同时,我学会了SASS的猴子补丁技巧:

Sass mixin递归; @include循环

现在我也可以帮助你了!

1)安装Compass

为了使这个解决方案起作用,您需要Compass。使用以下命令进行安装:

gem install compass

2)配置Compass

在项目根目录下创建一个compass.rb文件,并定义保存SASS和CSS代码的目录,例如:

css_dir = "stylesheets"
sass_dir = "sass"

3) 创建猴子补丁

在项目根目录下创建一个名为remove-all-comments-monkey-patch.rb的文件:

class Sass::Tree::Visitors::Perform < Sass::Tree::Visitors::Base

  # Removes all comments completely
  def visit_comment(node)
    return []
  end

end

4)从config.rb要求猴子补丁

config.rb中添加:


# Removing all comments by applying a monkey patch to SASS compiler
require "./remove-all-comments-monkey-patch"

5) 使用Compass编译你的项目

使用compass compile将SASS编译成CSS。你也可以使用compass watch来让Compass命令行工具持续监视你的代码变化,并重新编译你修改的部分。

注意事项

这不会删除由SASS生成的带有行号注释的注释。要禁用它们,请将config.rb中的line_comments = true一行注释掉或将其设置为false。

要重新启用多行注释,只需注释掉需要Monkey Patch的那一行,并执行compass clean

不要使用它!使用Ctrl+/进行单行注释。

尽管这种解决方案是可移植的,并且可以在不手动修改SASS代码的情况下适用于所有人,但你真的应该考虑使用允许使用单个按键注释整个段落的IDE。对我来说是Ctrl+/

这里,我为你拍摄了一个短视频,展示了使用行注释实际上比使用多行注释更快更有效:http://www.youtube.com/watch?feature=player_detailpage&v=DTyMAPZrwyc

行注释还允许你在不破坏代码的情况下注释掉注释。

考虑你有以下代码:

foo

/* Bla bla */
bar

baz

你需要将所有内容进行注释。如果你使用/* */将其全部包裹起来...

/*foo

/* Bla bla */
bar

baz*/

...然后你就破解了代码!现在你有一个以/*foo开头,以bla */结尾的注释,还有一个位于baz*/处的语法错误。

相反地,只需选择整段代码,按下Ctrl+/ (假设你使用的是IDE或程序员记事本)即可将其全部注释掉:

//foo
//
///* Bla bla */
//bar
//
//baz

当然,稍后可以用相同的热键取消注释。


是否有可能仅在局部文件(即以下划线开头的文件)中删除块注释? - niksy
@niksy 我认为不行,至少需要进行一定的黑客攻击。你应该在SASS问题队列中询问。 - Andrey Mikhaylov - lolmaus

0
你可以将注释包装在未使用的@mixin中 - 这不是理想的解决方法,但它可以工作。
@mixin ignore {
    /*
      COMMENT
    */
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接