UNPKG

prejss-cli

Version:

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

91 lines (68 loc) 2.63 kB
'use strict'; 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); };