prejss-cli
Version:
Get ES6 modules or JSON files from CSS/SCSS/LESS/other styles using PreJSS
91 lines (68 loc) • 2.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _outputFileSync = require('output-file-sync');
var _outputFileSync2 = _interopRequireDefault(_outputFileSync);
var _getNameWithoutExt = require('./utils/get-name-without-ext');
var _getNameWithoutExt2 = _interopRequireDefault(_getNameWithoutExt);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (file, options) {
var code = _fs2.default.readFileSync(file, 'utf-8');
var parser = require(options.parser);
// Change to default method if parser is ES6 module
if (typeof parser !== 'function') {
parser = parser.default;
}
var source = file.split(_path2.default.sep);
var name = (0, _getNameWithoutExt2.default)(source.pop());
var parsed = parser(code, { config: options.config });
var outExt = options.format === 'json' ? 'json' : 'js';
var outName = name + '.' + outExt;
var outDir = void 0;
if (options.sourceDir) {
// When we have a basic directory, e.g: ./examples/src
var subDir = _path2.default.relative(options.sourceDir, source.join(_path2.default.sep));
if (options.verbose) {
console.log('Found source directory', {
subDir: subDir,
outDir: _path2.default.join(options.outDir || options.sourceDir, subDir)
});
}
outDir = _path2.default.join(options.outDir || options.sourceDir, subDir);
} else if (options.outDir) {
// When we have a output directory only, e.g. ./examples/dist
if (options.verbose) {
console.log('Found output directory only', {
outDir: options.outDir
});
}
outDir = options.outDir;
} else {
// When we have to place output file in the same directory, e.g. ./examples/src
if (options.verbose) {
console.log('No source and output directory found', {
outDir: source.join(_path2.default.sep)
});
}
outDir = source.join(_path2.default.sep);
}
// source.push(finalName)
// const finalPath = source.join(path.sep)
var output = JSON.stringify(parsed, null, options.pretty ? 2 : 0);
switch (options.format) {
case 'commonjs':
output = 'module.exports = ' + output + ';';
break;
case 'es6':
output = 'export default ' + output;
break;
}
var finalFile = _path2.default.join(outDir, outName);
console.log('Process: ' + name + ' -> ' + finalFile);
(0, _outputFileSync2.default)(finalFile, output);
};