SCSS Custom Linter不在mixins内部,也不在函数中

时间:2017-06-07 22:20:13

标签: ruby sass scss-lint

我有这个linter规则,验证每个变量都使用!default

module SCSSLint
  # Reports the use of !default in properties.
  class Linter::DefaultRule < Linter
    include LinterRegistry

    def visit_variable(node)
      return if source_from_range(node.source_range).include?('!default')

      add_lint(node, '!default should be used')
    end
  end
end

我希望它只检查全局变量,而不是functionmixin中的变量。

如何让它忽略非全局范围的变量?

1 个答案:

答案 0 :(得分:0)

这是一个可行的解决方案:

module SCSSLint
  # Reports the use of !default at the end of variable declarations.
  class Linter::DefaultRule < Linter
    include LinterRegistry

    def visit_function(node)
      return true
    end

    def visit_variable(node)
      return if source_from_range(node.source_range).include?('!default')

      return unless node_ancestor(node, 2).nil?

      add_lint(node, '!default should be used')
    end
  end
end