Skip to content

Instantly share code, notes, and snippets.

@soluml
Created April 4, 2016 23:24
Show Gist options
  • Save soluml/c6be8110ad3b3fbca6010b703f044463 to your computer and use it in GitHub Desktop.
Save soluml/c6be8110ad3b3fbca6010b703f044463 to your computer and use it in GitHub Desktop.
Sample Build for CSS in Node
var fs = require('fs');
var path = require('path');
var glob = require('glob');
var nodesass = require('node-sass');
var postcss = require('postcss');
var autoprefixer = require('autoprefixer')({ browsers: ['last 2 versions', 'ie >= 9'] });
var cssnano = require('cssnano');
var cssmodules = require('postcss-modules')({});
//Process SCSS Files
glob('src/css/**/*.scss', {}, function(err, files) {
if(err) {
console.log('Could not glob .SCSS files!', err);
return;
}
files.filter(fn => !/^_/.test(path.basename(fn))).map(fn => {
var out = path.resolve('./public', path.basename(fn).split('.').slice(0, -1).join('.')),
outCSS = out +'.css',
outMap = out +'.css.map';
var Sass = nodesass.renderSync({
file: path.resolve(fn),
outFile: outCSS,
sourceMap: true,
outputStyle: 'expanded'
});
//Run PostCSS
postcss([autoprefixer, cssnano]).process(Sass.css, {
map: { prev: Sass.map.toString() }
}).then(PostCSS => {
fs.writeFileSync(outCSS, PostCSS.css);
fs.writeFileSync(outMap, PostCSS.map);
}, err => {
console.log('PostCSS Error:', err);
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment