node package manager

postcss-advanced-variables

Advanced Variables Build Status

Advanced Variables converts Sass-like variables and conditionals into CSS.

/* before */
 
$dir: assets/icons;
 
@each $icon in (foo, bar, baz) {
    .icon-$icon {
        background: url('$dir/$icon.png');
    }
}
 
@for $index from 1 to 5 by 2 {
    .col-$index {
        width: $(index)0%;
    }
}
 
/* after */
 
.icon-foo {
    background: url('assets/icons/foo.png');
}
 
.icon-bar {
    background: url('assets/icons/bar.png');
}
 
.icon-baz {
    background: url('assets/icons/baz.png');
}
 
.col-1 {
    width: 10%;
}
 
.col-3 {
    width: 30%;
}
 
.col-5 {
    width: 50%;
}

Usage

Add Advanced Variables to your build tool:

npm install postcss-advanced-variables --save-dev

Node

require('postcss-advanced-variables')({ /* options */ }).process(YOUR_CSS);

PostCSS

Add PostCSS to your build tool:

npm install postcss --save-dev

Load Advanced Variables as a PostCSS plugin:

postcss([
    require('postcss-advanced-variables')({ /* options */ })
]);

Gulp

Add Gulp PostCSS to your build tool:

npm install gulp-postcss --save-dev

Enable Advanced Variables within your Gulpfile:

var postcss = require('gulp-postcss');
 
gulp.task('css', function () {
    return gulp.src('./css/src/*.css').pipe(
        postcss([
            require('postcss-advanced-variables')({ /* options */ })
        ])
    ).pipe(
        gulp.dest('./css')
    );
});

Grunt

Add Grunt PostCSS to your build tool:

npm install grunt-postcss --save-dev

Enable Advanced Variables within your Gruntfile:

grunt.loadNpmTasks('grunt-postcss');
 
grunt.initConfig({
    postcss: {
        options: {
            processors: [
                require('postcss-advanced-variables')({ /* options */ })
            ]
        },
        dist: {
            src: 'css/*.css'
        }
    }
});

Options

variables

Type: Object
Default: {}

Specifies your own global variables.

require('postcss-advanced-variables')({
    variables: {
        'site-width': '960px'
    }
});
/* before */
 
.hero {
    max-width: $site-width;
}
 
/* after */
 
.hero {
    max-width: 960px;
}