Sass:如何将JSON文件直接解码为Sass变量?

时间:2014-03-12 04:31:28

标签: css json web sass

是否可以使用Node-Sass解码JSON文件?

例如:

@import "../data/data.json";

我需要将这些数据直接迭代到变量

欢迎任何帮助:)

3 个答案:

答案 0 :(得分:10)

sass-json-vars是一个很棒的宝石,但不适用于node-sass(这是原始问题的要求)。

相反,尝试node-sass-json-importer,这本质上是相同的,只是重新适应node-sass的导入器API。

答案 1 :(得分:9)

有一个名为 Sass JSON Vars 的宝石可以完全满足您的需求。

您可以使用以下命令行代码安装gem:

gem install sass-json-vars

如何使用Sass JSON Vars

对于使用Sass> = 3.3

的项目

将变量放在JSON文件中:

// variables.json
{
    "font-sans": "Helvetica, sans-serif",
    "colors": {
        "red": "#c33"
    }
}

在Sass中导入文件以公开变量名称:

@import "variables.json"

body {
    color: map-get($colors, red);
    font: $font-sans;
}

编译时需要sass-json-vars:

sass style.scss -r sass-json-vars

对于使用Sass< = 3.2

的项目

将变量放在JSON文件中:

// variables.json
{
    "font-sans": "Helvetica, sans-serif",
    "colors-red": "#c33"
}

在Sass中导入文件以公开变量名称:

@import "variables.json"

body {
    color: $colors-red;
    font: $font-sans;
}

编译时需要sass-json-vars:

sass style.scss -r sass-json-vars

更多信息:

答案 2 :(得分:0)

我不太确定你会怎么做但是这里有一个关于如何为sass添加自定义ruby函数的一个很好的例子:

https://gist.github.com/chriseppstein/1561650

还有一个关于如何解析json的问题:

Parsing a JSON string in Ruby

也许在将它们放在一起之后你可以做这样的事情吗?

module Sass::Script::Functions
  def json(Sass::Script::String)
    require 'rubygems'
    require 'json'
    JSON.parse(string)
  end
end

将其添加到config.rb文件的末尾,并确保安装了json ruby​​ gem:

gem install json

并运行:

compass compile --force

让一切顺利。

*这显然是未经测试的,并且不起作用,但它可能会帮助您到达您需要去的地方。