prejss-cli
Version:
Get ES6 modules or JSON files from CSS/SCSS/LESS/other styles using PreJSS
127 lines (92 loc) • 4.82 kB
JavaScript
;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _commander = require('commander');
var _commander2 = _interopRequireDefault(_commander);
var _glob = require('glob');
var _glob2 = _interopRequireDefault(_glob);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _lodash = require('lodash.uniq');
var _lodash2 = _interopRequireDefault(_lodash);
var _fsReaddirRecursive = require('fs-readdir-recursive');
var _fsReaddirRecursive2 = _interopRequireDefault(_fsReaddirRecursive);
var _processFile = require('./process-file');
var _processFile2 = _interopRequireDefault(_processFile);
var _package = require('../package.json');
var _package2 = _interopRequireDefault(_package);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
_commander2.default.option('-d, --out-dir [out]', 'Convert styles in an input directory into an output directory');
_commander2.default.option('-f, --format [format]', 'Format of compiled modules (es6, commonjs, json)');
_commander2.default.option('-p, --parser [name]', 'Parser name which is already installed as prejss-NAME-parser package');
_commander2.default.option('-c, --config [value]', 'Config values passed to specified or default parser', parseConfig);
_commander2.default.option('-v, --verbose', 'Enabled detailed debug output');
_commander2.default.option('--pretty', 'Prettify output result');
_commander2.default.version(_package2.default['name'] + ' ' + _package2.default['version']);
_commander2.default.usage('[options] <src>');
_commander2.default.parse(process.argv);
function parseConfig(val) {
var _val$split = val.split('='),
_val$split2 = _slicedToArray(_val$split, 2),
key = _val$split2[0],
params = _val$split2[1];
return _defineProperty({}, key, params.split(','));
}
var errors = [];
var globbedFiles = _commander2.default.args.reduce(function (globbed, input) {
var files = _glob2.default.sync(input);
if (!files.length) {
files = [input];
}
return globbed.concat(files);
}, []);
var sourceFiles = (0, _lodash2.default)(globbedFiles);
sourceFiles.forEach(function (filename) {
if (!_fs2.default.existsSync(filename)) {
errors.push(filename + ' does not exist');
}
});
var format = 'es6'; // default output format
if (_commander2.default['format']) {
var specFormat = typeof _commander2.default['format'] === 'string' && _commander2.default['format'].toLowerCase();
if (specFormat === 'commonjs' || specFormat === 'json') {
format = specFormat;
}
}
var parser = _commander2.default['parser'] || 'prejss-postcss-parser';
var pretty = _commander2.default['pretty'] || false;
var config = _commander2.default['config'];
var verbose = _commander2.default['verbose'] || false;
if (errors.length > 0) {
errors.forEach(function (message) {
return console.error(message);
});
process.exit(2);
}
var outDir = typeof _commander2.default['outDir'] === 'string' && _commander2.default['outDir'] || '';
var options = {
outDir: outDir,
format: format,
parser: parser,
pretty: pretty,
config: config,
verbose: verbose
};
if (options.verbose) {
console.log('Calculated options: ', { options: options });
}
sourceFiles.forEach(function (name) {
var stat = _fs2.default.statSync(name);
if (stat.isDirectory()) {
(0, _fsReaddirRecursive2.default)(name).forEach(function (fileInDir) {
var finalPath = _path2.default.join(name, fileInDir);
(0, _processFile2.default)(finalPath, _extends({}, options, { sourceDir: name }));
});
} else {
(0, _processFile2.default)(name, options);
}
});