UNPKG

prejss-cli

Version:

Get ES6 modules or JSON files from CSS/SCSS/LESS/other styles using PreJSS

127 lines (92 loc) 4.82 kB
#!/usr/bin/env node 'use strict'; 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); } });