2

node-sass.sublime-build在我的用户文件夹中保存了以下内容

{
    "shell_cmd": "node-sass.cmd $file",
    "selector": "source.scss"
}

我有一个slideEditor.scss文件。如果我将构建系统显式设置为node-sass, ctrl+b 可以正常工作,但如果我将其设置为“自动”,则 ctrl+b 不会执行任何操作,并且不会将任何内容记录到控制台。会发生什么?根据有限的文档,我做的一切都是正确的。

4

1 回答 1

2

首先,对您的问题的简短回答:更改"source.scss""source.sass"自动构建系统应该可以正常工作。

背景和一些替代方案:

Sublime 中的语法高亮(以及这个想法最初来自的 TextMate)基于.tmLanguage每种语言的语法定义。这些 XML/Plist 文件基本上是一系列将匹配项分配给范围的正则表达式。例如,在以下 CSS 中:

body {
    margin: 0;
}

这个词body有范围source.css meta.selector.css entity.name.tag.csssource.css基本作用域,或所有其他作用域的父作用域。在 Python 文件中,基本范围是source.python,在 HTML 中是text.html.basic,Javascript 是source.javascript等等。这个基本范围就是要"selector"寻找的——它与文件名无关。

您正在使用的语法定义的基本范围为source.sass,这就是为什么您的构建系统无法正常工作的原因,除非您特别选择它(它会覆盖该selector属性)。有两种方法可以解决这个问题。第一个,正如我上面提到的,只是简单地将选择器更改为source.sass,然后你就准备好了。第二个,我更喜欢使用Sass 包的语法高亮,可从包控制中获得。一方面,它为 SASS 和 SCSS 提供了不同的语言定义,因此您可以对两者进行适当的突出显示。如您所料, SCSS 的基本范围是source.scss,而 SASS的基本范围是source.sass,因此如果您使用两种语言,则可以拥有单独的构建系统。此外,语法定义比您使用的包要丰富得多,因此,如果您使用推荐的配色方案之一,您会很好地突出显示所有各种元素、关键字、属性等。最后,包包括一堆完成和其他使编写样式表更容易的附加功能。

于 2014-10-18T23:07:48.437 回答