不使用Ruby可以使用Sass或Compass吗?

105

有没有一种方法可以不使用Ruby来使用Sass或Compass或其他类似的技术?

我在Google和这个网站上找了一圈,但是找不到任何信息,希望能得到帮助。谢谢。


Node.js端口(https://github.com/andrew/node-sass)(以及Node.js - express - jade - compile SASS / LESS(https://dev59.com/ZW855IYBdhLWcg3wbzxl))。 - Jared Farrish
3
这是一个真正的问题吗?我的意思是你的意思不太清楚。是否有其他不依赖于 Ruby 的 CSS 预处理器?是的。有没有一种方法可以在没有 Ruby 的情况下编译 Sass?这要视情况而定,需要更多背景信息。 - Jamund Ferguson
但是您没有指定希望解析器使用哪种编程语言编写。 - Alejandro García Iglesias
1
有没有下载预编译版本的方法? - William
8个回答

53
Sass 最初是为 Ruby 编写的,但现在他们创建了 libSass,这是 Sass 引擎的 C/C++ 移植版本,使得将引擎集成到 IDE 或另一种语言中变得更加容易。目前,您可以在 Ruby、Node.jsPythonPHPJava.NET 等语言中使用 Sass 引擎。欲了解更多信息,请访问 libSass。此外,您的 IDE 可能具有插件,支持 Sass,无需使用 ruby,而是使用 libSass。

以下原始答案可能适用于您的情况,也可能不适用(这取决于您的语言是否实现了对libSass的支持)。出于档案原因,我决定保留它。


Sass(需要Ruby)

Sass用Ruby编写,因此您还需要安装Ruby。 来自Sass网站

Compass(基于SASS,需要Ruby)

Compass是一个开源的CSS编写框架,使用Sass样式表语言使编写样式表变得强大而简单。 来自Compass网站

Less(使用js编写,需要node.js或在页面中包含less.js)

LESS通过变量、mixin、操作和函数等动态行为扩展了CSS。LESS在客户端(Chrome、Safari、Firefox)和服务器端(Node.js和Rhino)上运行。 来自Less网站

这些是我知道的主要处理器。您可以为任何其他语言编写自己的解析器/端口。

换句话说,如果没有安装Ruby程序,那么您不能使用sass/compass,因为这个程序本身(sass和compass)是用Ruby编写的。因此,您必须安装Ruby程序才能运行它。


这在技术上是准确的,但并不是很切中要点,因为各种插件可以为您处理它。例如,在Visual Studio中,有Mindscape Workbench插件,它具有自包含的Ruby环境,您不必担心。但是,它不会为您包含compass,这有点令人失望。 - George Mauer
不,我没有尝试在其他语言中寻找类似的编译器。你应该能够在任何好的语言中从头开始编写编译器,但这很可能会花费你很多时间。首先,你必须能够解析CSS(并检测CSS语法中的任何错误),然后你将不得不“编译”(这主要是重新格式化 - 即CSS代码是一行)。之后,你很可能想添加多个具有继承性的CSS。如果你觉得有时间,可以尝试做一下,并与我们分享结果 :) - tftd
1
LESS也可以在.NET中使用dotLESS NuGet包本地化。 - David Boike

28

1
grunt-sass 是我正在寻找的。 - 9ilsdx 9rvj 0lo

27
这个问题确实不够清晰,但我会试着解决一些问题。有其他不依赖于Ruby的CSS预处理器(比如LessStylus),但是因为你特别问到Sass+Compass,而且我也在寻找同样的答案,所以我会讨论这个。
@JamundFerguson说:
“是否有一种方法可以编译不需要Ruby的Sass?取决于情况。”
确实存在这种方法。
Sass是一种预处理语言。它内置了一个Ruby编译器,任何人都可以使用任何语言编写编译器。有一个名为libsass的Sass编译器的C实现,可用于允许导入C库的任何语言。这是node-sass使用的库,它是在Node.js中构建的编译器,我还没有尝试过,并不知道它如何工作以及是否已准备好用于生产。可能需要时间将Compass移植(也许您最终会这样做?),因此我们可以拥有一个不依赖于Ruby gem的编译器(目前有一个node-compass模块,它确实依赖于Ruby gem)。

其他语言

到目前为止,我已经提到了一个Node.js编译器的可能性,它是一个JavaScript环境,作为Web语言和我的首选语言。但是你没有指定你想要编译器用哪种语言编写。我认为可能有许多语言构建的编译器,例如,@EricMeyer提到了一个Python编译器。也许他在使用pyScss?似乎它内置了对Compass的支持。但是你需要一个Python环境。所以问题是:除非你运行本地编译的二进制文件,否则你需要一些编译器环境。(Less有less.js,可以包含在页面中运行客户端并避免编译步骤,但不适用于生产使用。)

本地应用程序

我已经使用CodeKit一年了,它的编译效果非常好,可以编译Sass/Compass、Less、Stylus和模板语言,如Haml、Slim、Jade等。只要更改后自动重建你的资源文件,并立即在浏览器中查看更改。唯一不好的是,当我换到另一台电脑时,安装CodeKit,检出项目并尝试使用时,我必须重新配置项目设置,以便能够像在另一台电脑上制作的构建。此外,我开始与团队合作,他们也必须使用相同的设置来配置项目(有时没有相同的项目配置会导致难看的不一致),而且使用Ubuntu的团队成员无法使用它。这就是为什么我开始考虑制作一个命令行工具来构建项目,并立即发现了Grunt,并爱上了它。正如@Dave提到的那样,还有ScoutLiveReload,但我没有用过它们。

结论

我的结论并不是很明确。我仍在寻找相同的答案,但我希望这个答案能够为在Ruby环境之外编译Sass/Compass的状态提供一些启示。


1
关于 libsass 的现状:http://www.solitr.com/blog/2014/01/state-of-libsass/,这是 node-sass 和其他 sass 库所依赖的。 - Ehtesh Choudhury

11

关于这个问题的更新,你可以使用 SCSS/SASS 文件并通过一个叫 Scout 的程序动态生成正确的文件而不需要安装 Ruby。

Scout 拥有自己独立的 Ruby 环境并且是用 Java 编写的,因此在使用之前请确保你的 Java 已经更新到最新版本。 这里是链接。

祝好 :)


8
我更喜欢使用Ruby而不是Java ;) - basarat
实际上,在我写这篇文章的时候,Scout使用的是Adobe Air。也许旧版本使用了Java? - iconoclast
3
红宝石仍然比空气好 :) - user3348051

4

2

Adobe Brackets(免费、开源)可以在文件更改时编译LESS、SASS和Stylus,并在实时预览期间更新样式,您只需要从扩展管理器安装所需的扩展即可。 获取Brackets并享受吧!

编辑:正如其他问题建议的那样,node-sass也是一个很好的选择,如果您已经安装了nodejs。


2
如果这是针对.NET的,现在有一个libsass的包装器NSass。可以从Nuget获取。请注意保留HTML标签。

0
macOS用户可以通过运行以下命令安装Dart Sass:
$ brew install sass/sass/sass

Windows 用户可以通过运行以下命令来安装 Dart Sass:

$ choco install sass

更多信息: https://github.com/sass/dart-sass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接