【问题标题】:How to ignore multiline comments in sass?如何忽略 sass 中的多行注释?
【发布时间】:2013-03-21 04:03:41
【问题描述】:

有没有办法让sass在生成css文件时忽略多行cmets:

// these comments are ignored

这些不是(仅在压缩模式下被忽略):

/*
 * multiline comments
 *
 */

我在 Github 上找到了这个ticket,作者说:

如果你真的想要,你也可以对 Sass 进行猴子补丁以使 /* */ cmets 静音。

但是我不知道他说的monkeypatch sass是什么意思,那我该怎么做呢?

【问题讨论】:

  • 由于您的所有生产 CSS 都将被压缩/缩小,出于好奇,您为什么需要此功能?
  • 如果你使用compressed输出格式,生成的CSS中不会出现cmets。
  • @bookcasey 是的,我知道,但我也想要一个没有 cmets 的 css 文件的紧凑和扩展版本来分发它们,当前生成的文件包含不需要的而不是到位的 cmets,我有许多导入的 sass 文件.
  • 我知道这是我可以解决的问题,但我想将这些 cmets 保留在原始 sass 文件中。

标签: ruby comments sass


【解决方案1】:

耶!我在回答这个问题时学习了猴子修补 SASS:

Sass mixin recursion; @include loop

现在我也可以帮你!

1) 安装指南针

要使此解决方案起作用,您需要Compass。安装它:

gem install compass

2) 配置指南针

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

css_dir = "stylesheets"
sass_dir = "sass"

3) 创建monkey patch

在项目的根目录中创建一个名为 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 生成的行号的 cmets。要禁用它们,请注释掉 config.rb 中的 line_comments = true 行或将其设置为 false。

要重新启用多行 cmets,只需注释掉需要猴子补丁的行并执行compass clean

不要使用它!使用带有 Ctrl+/ 的单行 cmets。

尽管此解决方案是可移植的,并且无需手动破解 SASS 代码即可适用于所有人,但您确实应该考虑使用允许使用单行 cmets 使用单个击键来注释掉整个段落的 IDE。对我来说是Ctrl+/

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

Line cmets 还可以让您在不破坏代码的情况下注释掉 cmets。

假设您有以下代码:

foo

/* Bla bla */
bar

baz

你需要把它全部注释掉。如果你用/* */包装它...

/*foo

/* Bla bla */
bar

baz*/

...那你破解了密码!现在您有一条以/*foo 开头并以bla */ 结尾的评论,还有baz*/ 处的语法错误。

相反,只需选择整个代码并点击Ctrl+/(前提是使用某些IDE或程序员的记事本),它会立即被注释掉:

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

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

【讨论】:

  • 是否可以仅在部分(即以下划线开头的文件)中剥离块 cmets?
  • @niksy 我认为不会,至少有合理数量的黑客攻击。你应该问SASS issue queue
【解决方案2】:

您可以将评论包装在未使用的 @mixin 中 - 不是一个理想的修复方法,但它可以工作。

@mixin ignore {
    /*
      COMMENT
    */
}

【讨论】:

    猜你喜欢
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 2021-06-07
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多