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

Rau*_*aul 8 css json sass web

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

例如:

@import "../data/data.json";
Run Code Online (Sandbox Code Playgroud)

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

欢迎任何帮助:)

Sti*_*ler 10

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

相反,尝试node-sass-json-importer,它本质上是相同的东西,只是重新适应了node-sass导入器API.


Joh*_*ers 9

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

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

gem install sass-json-vars
Run Code Online (Sandbox Code Playgroud)

如何使用Sass JSON Vars

对于使用Sass> = 3.3的项目

将变量放在JSON文件中:

// variables.json
{
    "font-sans": "Helvetica, sans-serif",
    "colors": {
        "red": "#c33"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

@import "variables.json"

body {
    color: map-get($colors, red);
    font: $font-sans;
}
Run Code Online (Sandbox Code Playgroud)

编译时需要sass-json-vars:

sass style.scss -r sass-json-vars
Run Code Online (Sandbox Code Playgroud)

对于使用Sass <= 3.2的项目

将变量放在JSON文件中:

// variables.json
{
    "font-sans": "Helvetica, sans-serif",
    "colors-red": "#c33"
}
Run Code Online (Sandbox Code Playgroud)

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

@import "variables.json"

body {
    color: $colors-red;
    font: $font-sans;
}
Run Code Online (Sandbox Code Playgroud)

编译时需要sass-json-vars:

sass style.scss -r sass-json-vars
Run Code Online (Sandbox Code Playgroud)

更多信息 :


agc*_*nti 0

我不太确定你会如何做到这一点,但这里有一个关于如何向 sass 添加自定义 ruby​​ 函数的很好的例子:

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

下面是如何解析 json 的一个:

在 Ruby 中解析 JSON 字符串

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

module Sass::Script::Functions
  def json(Sass::Script::String)
    require 'rubygems'
    require 'json'
    JSON.parse(string)
  end
end
Run Code Online (Sandbox Code Playgroud)

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

gem install json
Run Code Online (Sandbox Code Playgroud)

并运行:

compass compile --force
Run Code Online (Sandbox Code Playgroud)

让这一切发挥作用。

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