Skip to content

Latest commit

 

History

History
151 lines (113 loc) · 3.12 KB

README.md

File metadata and controls

151 lines (113 loc) · 3.12 KB

PostCSS Simple Variables Build Status

PostCSS plugin for Sass-like variables.

You can use variables inside values, selectors and at-rule’s parameters.

$dir:    top;
$blue:   #056ef0;
$column: 200px;

.menu_link {
    background: $blue;
    width: $column;
}
.menu {
    width: calc(4 * $column);
    margin-$(dir): 10px;
}
.menu_link {
    background: #056ef0;
    width: 200px;
}
.menu {
    width: calc(4 * 200px);
    margin-top: 10px;
}

If you want be closer to W3C spec, you should use postcss-custom-properties plugin.

Also you should look at postcss-map for big complicated configs.

Interpolation

There is special syntax if you want to use variable inside CSS words:

$prefix: my-company-widget

$prefix { }
$(prefix)_button { }

Usage

postcss([ require('postcss-simple-vars') ])

See PostCSS docs for examples for your environment.

Options

Call plugin function to set options:

.pipe(postcss([ require('postcss-simple-vars')({ silent: true }) ]))

variables

Set default variables. It is useful to store colors or other constants in common file:

// config/colors.js

module.exports = {
    blue: '#056ef0'
}

// gulpfile.js

var colors = require('./config/colors');
var vars   = require('postcss-simple-vars')

gulp.task('css', function () {
     return gulp.src('./src/*.css')
        .pipe(postcss([ vars({ variables: colors }) ]))
        .pipe(gulp.dest('./dest'));
});

You can set a function returning object, if you want to update default variables in webpack hot reload:

postcss([
    vars({
        variables: function () {
            return require('./config/colors');
        }
    })
]

onVariables

Callback invoked once all variables in css are known. The callback receives an object representing the known variables, including those explicitly-declared by the variables option.

postcss([
    vars({
        onVariables: function (variables) {
            console.log('CSS Variables');
            console.log(JSON.stringify(variables, null, 2));
        }
    })
]

unknown

Callback on unknown variable name. It receives node instanc, variable name and PostCSS’ Result object.

postcss([
    vars({
        unknown: function (node, name, result) {
            node.warn(result, 'Unknown variable ' + name);
        }
    })
]

silent

Left unknown variables in CSS and do not throw a error. Default is false.

only

Set value only for variables from this object. Other variables will not be changed. It is useful for PostCSS plugin developers.