#!/usr/bin/env node var version = require('../package.json').version; function help() { console.log([ 'crass ' + version, 'Usage:', ' crass [options]', '', 'Options:', ' --optimize Run optimizations on the file.', ' --O1 Runs optimizations with the O1 flag.', ' --pretty Pretty prints the output.', ' --min xxx[[,xxx]] Sets browser minimum versions.', ' --saveie Enables support for IE6 and below.', ' --css4 Allows optimizer to generate CSS 4 (may not be supported by all browsers).', '', 'Browser versions:', ' - Must start with browser name', ' - Followed by version', ' - E.g.: chr28 ie9 fx16 op15' ].join('\n')); } var fs = require('fs'); function tryRequire(module) { try { return require('../src/' + module); } catch (e) { return require('../dist/' + module); } } var browser_support = tryRequire('browser_support'); var utils = tryRequire('utils'); var opts = utils.opts(process.argv.slice(3)); var crass = tryRequire(''); if (process.argv.length < 3) { help(); process.exit(1); } fs.readFile(process.argv[2], function(err, data) { if (err) { console.error('Could not read file.'); console.error(err); help(); process.exit(1); } var parsed = crass.parse(data); var kw = {}; if ('min' in opts) { var minPlatsUnparsed = opts.min.split(','); if (minPlatsUnparsed.length) { var minPlats = minPlatsUnparsed.map(browser_support.parseBrowser); kw.browser_min = {}; minPlats.forEach(function(plat) { kw.browser_min[plat.browser] = plat.version; }); } } else { kw.browser_min = { chrome: 39, firefox: 31, ie: 11, opera: 26, }; } kw.css4 = 'css4' in opts && opts.css4; if (opts.optimize) { if (opts.o1 || opts.O1) kw.o1 = true; if (opts.saveie) kw.saveie = true; parsed = parsed.optimize(kw); } if (opts.pretty) { console.log(parsed.pretty()); } else { console.log(parsed.toString()); } });