get-sass-vars

Get Sass variables as JSON object.

Usage no npm install needed!

<script type="module">
  import getSassVars from 'https://cdn.skypack.dev/get-sass-vars';
</script>

README

get-sass-vars

Build Status

Get Sass variables as JSON object.

Install

npm install get-sass-vars --save

Usage

import { promises as fs } from 'fs';
import sassVars from 'get-sass-vars';

(async () => {
    const css = await fs.readFile('./index.scss', 'utf-8');
    const json = await sassVars(css);
    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

sassVars(input[, options])

Returns: Promise<JsonObject>

Gets Sass variables from Sass string.

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

input

Type: string

Sass input string.

options

Type: object

camelize

Type: boolean
Default: false

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

precision

Type: boolean
Default: 5

Number of digits after the decimal.

sassOptions

Type: sass.Options<"async">|sass.LegacyOptions<"async">
Default: {}

Options for Sass renderer.

sassVars.sync(input[, options])

Returns: JsonObject

Gets Sass variables from Sass string. Sync version.

All arguments are same as async version, except options.sassOptions which is of type sass.Options<"sync">|sass.LegacyOptions<"sync">.

Related

License

MIT © Ivan Nikolić