没有红宝石的 Sass 或 Compass?

Posted

技术标签:

【中文标题】没有红宝石的 Sass 或 Compass?【英文标题】:Sass or Compass without ruby? 【发布时间】:2012-09-21 08:12:29 【问题描述】:

有没有办法在没有 Ruby 的情况下使用 Sass 或 Compass 或类似的东西?

我一直在寻找谷歌和这个网站,找不到任何东西,任何帮助将不胜感激。谢谢

【问题讨论】:

Node.js port(和Node.js - express - jade - compile SASS/LESS)。 这是一个真实的问题吗?我的意思是不清楚你的意思。还有其他不依赖 Ruby 的 CSS 预处理器吗?是的。有没有办法在没有 Ruby 的情况下编译 Sass?要看。我们需要更多背景知识。 但是您没有指定您希望将解析器写入哪种语言。 有没有办法下载预编译的版本? 【参考方案1】:

Sass 最初是为 Ruby 编写的,但现在他们创建了 libSass,它是 Sass 引擎的 C/C++ 端口,这使得将引擎集成到 IDE 或其他语言中变得更加容易。此时,您可以在 Ruby 中使用 Sass 引擎,Node.js、Python、php、Java、.NET 等。欲了解更多信息,请访问libSass。此外,您的 IDE 可能有一个支持 Sass 的插件,而无需使用 libSass 进行 ruby​​。

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


Sass(需要 Ruby)

Sass 是用 Ruby 编写的,因此您还需要安装 Ruby。 Taken from sass's site

Compass(需要 Ruby,因为它基于 SASS)

Compass 是一个开源 CSS 创作框架,它使用 Sass 样式表语言使编写样式表变得强大而简单。 Taken from compass's site

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

LESS 使用变量、mixin、操作和函数等动态行为扩展了 CSS。 LESS 使用 Node.js 和 Rhino 在客户端(Chrome、Safari、Firefox)和服务器端运行。 Taken from Less's site

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

换句话说,没有 Ruby 就不能使用 sass/compass,因为程序本身(sass 和 compass)是用 Ruby 编写的。所以你肯定需要它来运行它。

【讨论】:

这在技术上是准确的,但并不是很准确,因为各种插件可以为您处理它。例如,在 Visual Studio 中有一个 Mindscape Workbench 插件,它有一个独立的 ruby​​ 环境,您不必担心。它不包括你的指南针,但这有点令人沮丧。 不,我没有尝试在其他语言中找到类似的编译器。你应该能够用几乎任何体面的语言从头开始编写编译,但这很可能会花费你很多时间。首先,您必须能够解析 css(并检测 css 语法中的任何错误),然后您必须“编译”(主要是重新格式化 - 即 css 代码是一行) css。之后,您很可能希望添加多个带有继承的 css。如果你觉得你有时间,你可以尝试做,并与我们分享结果:) LESS 也可以在 .NET 中使用 dotLESS NuGet 包本地实现。【参考方案2】:

其实有一个库提供Node.js绑定到libsass,即Sass的C版:https://npmjs.org/package/node-sass

它允许您在不安装 Ruby 的情况下以惊人的速度将 .scss 文件本地编译为 css。

安装只需运行:

npm install node-sass

如果需要,还有一个 Grunt 扩展:https://github.com/sindresorhus/grunt-sass(这是我在这个问题中一直在寻找的)

了解更多信息:https://github.com/andrew/node-sass

【讨论】:

grunt-sass 正是我想要的。【参考方案3】:

确实问题不够清楚,但我会尝试解决一些问题。 还有其他不依赖 Ruby 的 CSS 预处理器(我现在想到的两个是 Less,我已经使用并喜欢它,但不如 Sass 强大,并且Stylus,我没用过,都是基于 javascript 的),但是当你专门询问 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 环境,是网络语言和我选择的语言。但是您没有指定您希望将编译器写入哪种语言。我认为可能有许多语言内置的编译器,例如@EricMeyer 提到了Python 编译器。也许他正在使用pyScss?这似乎内置了对 Compass 的支持。但是你需要一个 Python 环境。所以问题是:你需要一些编译器环境,除非你运行本地编译的二进制文件。 (Less 有 less.js 可以包含在页面中以运行客户端并避免编译步骤,但它不适合在生产中使用。)

原生应用

我已经与 CodeKit 合作了一年,它做得很好,可以编译 Sass/Compass、Less、Stylus 和 Haml、Slim、Jade 等模板语言。当它们自动更改并且您看到时重建您的资产立即在您的浏览器上更改。我唯一不喜欢的是,当移动到另一台计算机、安装 CodeKit、签出项目并尝试使用它时,我必须重新配置项目设置,我必须记住这些设置,以便进行构建就像我在另一台电脑上做的一样。我也开始与一个团队合作,他们还必须使用相同的设置配置项目(有时没有相同的项目配置会导致丑陋的不一致),而且使用 Ubuntu 的团队成员也无法使用它。这就是为什么我开始考虑制作一个命令行工具来构建项目并立即发现Grunt,并爱上了它。 正如@Dave 提到的,有Scout 和LiveReload,但没有使用它们。

结论

结论是我没有一个强有力的结论。我仍在寻找相同的答案,但我希望这个答案对在 Ruby 环境之外编译 Sass/Compass 的状态有所帮助。

【讨论】:

对于 libsass 的状态:solitr.com/blog/2014/01/state-of-libsass,node-sass 和其他 sass-libraries 所依赖的。【参考方案4】:

只需对此进行一点更新,您就可以使用 SCSS/SASS 文件并即时生成正确的文件,而无需使用名为 Scout 的程序安装 Ruby。

Scout 有自己独立的 ruby​​ 环境,并且是用 java 编码的,所以在使用之前确保你的 java 是最新的。 Linky here.

问候:)

【讨论】:

我宁愿 ruby​​ 胜过 java ;) 其实在我写这篇Scout的时候使用的是Adobe Air。也许旧版本使用了 Java? 仍然比 Air 好 :)【参考方案5】:

实际上你可以不用 ruby​​ 来解析 sass,你可以使用 node-sass。 详情在这里:https://github.com/andrew/node-sass

【讨论】:

【参考方案6】:

如果这是用于 .NET,则现在有 a wrapper for libsass。来自Nuget。

【讨论】:

【参考方案7】:

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

编辑:正如其他问题所暗示的那样,如果您已经安装了 nodejs,node-sass 也是一个不错的选择。

【讨论】:

【参考方案8】:

macOS 用户可以通过运行安装 Dart Sass

$ brew install sass/sass/sass

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

$ choco install sass

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

【讨论】:

以上是关于没有红宝石的 Sass 或 Compass?的主要内容,如果未能解决你的问题,请参考以下文章

Sass / Compass中的自动变暗颜色

SASS Compass 生成一个 0 KB 的文件

sass & compass

使用 Sass / Compass 的多个背景图像

防止 SASS/Compass 输出分音

Sass学习笔记 -- 在Windows系统中安装Sass和Compass