如何忽略 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 中的多行注释?的主要内容,如果未能解决你的问题,请参考以下文章