Skip to content

itgalaxy/get-sass-vars-sync

Repository files navigation

get-sass-vars-sync

NPM version Travis Build Status dependencies Status devDependencies Status Greenkeeper badge

Get Sass variables synchronously as JSON object.

Install

npm install get-sass-vars-sync node-sass --save-dev

The sass-loader requires node-sass as peerDependency. Thus you are able to specify the required versions accurately.

Usage

const fs = require('fs');
const sassVarsSync = require('get-sass-vars-sync').default;

sassVarsSync(fs.readFileSync('./index.scss', 'utf-8'))
    .then(function ( json ) {
        console.log(json);
        /* {
        "$foo": "16px",
        "$bar": "17.6px",
        "$baz": 42,
        "$foo-bar": "#666",
        "$foo-bar-baz": "#262626",
        "$foo-bar-baz-bad": "#123",
        "$grault": [1, 2, "3", "4px", "42%", "1.23457px", [4, 5, 6], {"foo": "bar baz"}],
        "$garply": {"foo": 1, "bar": [2, 3], "baz": "3 3 3"},
        "$qux": false,
        "$fred": true,
        "$corgle": null
        } */
  });

index.scss

$foo: 16px;
$bar: $foo * 1.1;
$baz: 42;
$foo-bar: #666;
$foo-bar-baz: darken($foo-bar, 25%);
$foo-bar-baz-bad: #123 !default;
$grault: 1, 2, "3", 4px, 42%, 1.23456789px, (4,5,6), (foo: "bar baz");
$garply: (
    foo: 1,
    bar: (2, 3),
    baz: "3 3 3"
);
$qux: false;
$fred: true;
$corgle: null;

.nested {
    .selector {
        $nested-var: thud;
    }
}

API

sassVarsSync(str, options)

Returns: Object

Gets Sass variables from Sass string.

Only top-level variables will be considered, anything inside selector or at-rule is ignored. PR welcome.

str

Type: String

Sass input string.

opts

Type: Object

camelize

Type: Boolean
Default: false

Camelize first-level JSON object keys and strip inital $ (e.g. $foo-bar will become fooBar).

sassOptions

Type: Object

Options for node-sass.

Related

Contribution

Feel free to push your code if you agree with publishing under the MIT license.