如何忽略 sass 中的多行注释?

Posted

技术标签:

【中文标题】如何忽略 sass 中的多行注释?【英文标题】:How to ignore multiline comments in 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 文件中。 【参考方案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
    */

【讨论】:

以上是关于如何忽略 sass 中的多行注释?的主要内容,如果未能解决你的问题,请参考以下文章

android 代码中如何注释多行

python多行注释是啥?

shell脚本——注释(单行注释 多行注释)

python能添加注释么 怎么添加

Kivy 中的多行注释

java基础:java基础语法