electron-compile
Version:
Electron supporting package to compile JS and CSS in Electron applications
180 lines (131 loc) • 12.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.main = undefined;
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var main = exports.main = function () {
var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(appDir, sourceDirs, cacheDir) {
var _this = this;
var compilerHost, rootCacheDir;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
compilerHost = null;
if (!cacheDir || cacheDir.length < 1) {
cacheDir = '.cache';
}
rootCacheDir = _path2.default.join(appDir, cacheDir);
_mkdirp2.default.sync(rootCacheDir);
if (process.env.NODE_ENV !== 'production') {
console.log('Using NODE_ENV = ' + (process.env.NODE_ENV || 'development'));
}
d('main: ' + appDir + ', ' + (0, _stringify2.default)(sourceDirs));
_context2.prev = 6;
_context2.next = 9;
return (0, _configParser.createCompilerHostFromProjectRoot)(appDir, rootCacheDir);
case 9:
compilerHost = _context2.sent;
_context2.next = 17;
break;
case 12:
_context2.prev = 12;
_context2.t0 = _context2['catch'](6);
console.error('Couldn\'t set up compilers: ' + _context2.t0.message);
d(_context2.t0.stack);
throw _context2.t0;
case 17:
_context2.next = 19;
return _promise2.default.all(sourceDirs.map(function (dir) {
return (0, _forAllFiles.forAllFiles)(dir, function () {
var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(f) {
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.prev = 0;
d('Starting compilation for ' + f);
_context.next = 4;
return compilerHost.compile(f);
case 4:
_context.next = 11;
break;
case 6:
_context.prev = 6;
_context.t0 = _context['catch'](0);
console.error('Failed to compile file: ' + f);
console.error(_context.t0.message);
d(_context.t0.stack);
case 11:
case 'end':
return _context.stop();
}
}
}, _callee, _this, [[0, 6]]);
}));
return function (_x4) {
return _ref2.apply(this, arguments);
};
}());
}));
case 19:
d('Saving out configuration');
_context2.next = 22;
return compilerHost.saveConfiguration();
case 22:
case 'end':
return _context2.stop();
}
}
}, _callee2, this, [[6, 12]]);
}));
return function main(_x, _x2, _x3) {
return _ref.apply(this, arguments);
};
}();
require('./babel-maybefill');
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _mkdirp = require('mkdirp');
var _mkdirp2 = _interopRequireDefault(_mkdirp);
var _configParser = require('./config-parser');
var _forAllFiles = require('./for-all-files');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
process.on('unhandledRejection', function (e) {
d(e.message || e);
d(e.stack || '');
});
process.on('uncaughtException', function (e) {
d(e.message || e);
d(e.stack || '');
});
var d = require('debug-electron')('electron-compile');
var yargs = require('yargs').usage('Usage: electron-compile --appdir [root-app-dir] paths...').alias('a', 'appdir').describe('a', 'The top-level application directory (i.e. where your package.json is)').default('a', process.cwd()).alias('c', 'cachedir').describe('c', 'The directory to put the cache').default('c', '.cache').help('h').alias('h', 'help').epilog('Copyright 2015');
if (process.mainModule === module) {
var argv = yargs.argv;
if (!argv._ || argv._.length < 1) {
yargs.showHelp();
process.exit(-1);
}
var sourceDirs = argv._;
var appDir = argv.a;
var cacheDir = argv.c;
main(appDir, sourceDirs, cacheDir).then(function () {
return process.exit(0);
}).catch(function (e) {
console.error(e.message || e);
d(e.stack);
console.error("Compilation failed!\nFor extra information, set the DEBUG environment variable to '*'");
process.exit(-1);
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGkuanMiXSwibmFtZXMiOlsiYXBwRGlyIiwic291cmNlRGlycyIsImNhY2hlRGlyIiwiY29tcGlsZXJIb3N0IiwibGVuZ3RoIiwicm9vdENhY2hlRGlyIiwiam9pbiIsInN5bmMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwibG9nIiwiZCIsImVycm9yIiwibWVzc2FnZSIsInN0YWNrIiwiYWxsIiwibWFwIiwiZGlyIiwiZiIsImNvbXBpbGUiLCJzYXZlQ29uZmlndXJhdGlvbiIsIm1haW4iLCJvbiIsImUiLCJyZXF1aXJlIiwieWFyZ3MiLCJ1c2FnZSIsImFsaWFzIiwiZGVzY3JpYmUiLCJkZWZhdWx0IiwiY3dkIiwiaGVscCIsImVwaWxvZyIsIm1haW5Nb2R1bGUiLCJtb2R1bGUiLCJhcmd2IiwiXyIsInNob3dIZWxwIiwiZXhpdCIsImEiLCJjIiwidGhlbiIsImNhdGNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0VBbUJPLGtCQUFvQkEsTUFBcEIsRUFBNEJDLFVBQTVCLEVBQXdDQyxRQUF4QztBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDREMsd0JBREMsR0FDYyxJQURkOztBQUVMLGdCQUFJLENBQUNELFFBQUQsSUFBYUEsU0FBU0UsTUFBVCxHQUFrQixDQUFuQyxFQUFzQztBQUNwQ0YseUJBQVcsUUFBWDtBQUNEOztBQUVHRyx3QkFOQyxHQU1jLGVBQUtDLElBQUwsQ0FBVU4sTUFBVixFQUFrQkUsUUFBbEIsQ0FOZDs7QUFPTCw2QkFBT0ssSUFBUCxDQUFZRixZQUFaOztBQUVBLGdCQUFJRyxRQUFRQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekNDLHNCQUFRQyxHQUFSLHdCQUFnQ0osUUFBUUMsR0FBUixDQUFZQyxRQUFaLElBQXdCLGFBQXhEO0FBQ0Q7O0FBRURHLHlCQUFXYixNQUFYLFVBQXNCLHlCQUFlQyxVQUFmLENBQXRCO0FBYks7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SSxLQUZILENBRVMsVUFBQ25CLENBQUQsRUFBTztBQUNaZCxZQUFRRyxLQUFSLENBQWNXLEVBQUVWLE9BQUYsSUFBYVUsQ0FBM0I7QUFDQVosTUFBRVksRUFBRVQsS0FBSjs7QUFFQUwsWUFBUUcsS0FBUixDQUFjLHVGQUFkO0FBQ0FOLFlBQVFnQyxJQUFSLENBQWEsQ0FBQyxDQUFkO0FBQ0QsR0FSSDtBQVNEIiwiZmlsZSI6ImNsaS5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgJy4vYmFiZWwtbWF5YmVmaWxsJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG1rZGlycCBmcm9tICdta2RpcnAnO1xuXG5pbXBvcnQge2NyZWF0ZUNvbXBpbGVySG9zdEZyb21Qcm9qZWN0Um9vdH0gZnJvbSAnLi9jb25maWctcGFyc2VyJztcbmltcG9ydCB7Zm9yQWxsRmlsZXN9IGZyb20gJy4vZm9yLWFsbC1maWxlcyc7XG5cbnByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlKSA9PiB7XG4gIGQoZS5tZXNzYWdlIHx8IGUpO1xuICBkKGUuc3RhY2sgfHwgJycpO1xufSk7XG5cbnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGUpID0+IHtcbiAgZChlLm1lc3NhZ2UgfHwgZSk7XG4gIGQoZS5zdGFjayB8fCAnJyk7XG59KTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1haW4oYXBwRGlyLCBzb3VyY2VEaXJzLCBjYWNoZURpcikge1xuICBsZXQgY29tcGlsZXJIb3N0ID0gbnVsbDtcbiAgaWYgKCFjYWNoZURpciB8fCBjYWNoZURpci5sZW5ndGggPCAxKSB7XG4gICAgY2FjaGVEaXIgPSAnLmNhY2hlJztcbiAgfVxuXG4gIGxldCByb290Q2FjaGVEaXIgPSBwYXRoLmpvaW4oYXBwRGlyLCBjYWNoZURpcik7XG4gIG1rZGlycC5zeW5jKHJvb3RDYWNoZURpcik7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zb2xlLmxvZyhgVXNpbmcgTk9ERV9FTlYgPSAke3Byb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdkZXZlbG9wbWVudCd9YCk7XG4gIH1cblxuICBkKGBtYWluOiAke2FwcERpcn0sICR7SlNPTi5zdHJpbmdpZnkoc291cmNlRGlycyl9YCk7XG4gIHRyeSB7XG4gICAgY29tcGlsZXJIb3N0ID0gYXdhaXQgY3JlYXRlQ29tcGlsZXJIb3N0RnJvbVByb2plY3RSb290KGFwcERpciwgcm9vdENhY2hlRGlyKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYENvdWxkbid0IHNldCB1cCBjb21waWxlcnM6ICR7ZS5tZXNzYWdlfWApO1xuICAgIGQoZS5zdGFjayk7XG5cbiAgICB0aHJvdyBlO1xuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoc291cmNlRGlycy5tYXAoKGRpcikgPT4gZm9yQWxsRmlsZXMoZGlyLCBhc3luYyAoZikgPT4ge1xuICAgIHRyeSB7XG4gICAgICBkKGBTdGFydGluZyBjb21waWxhdGlvbiBmb3IgJHtmfWApO1xuICAgICAgYXdhaXQgY29tcGlsZXJIb3N0LmNvbXBpbGUoZik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNvbXBpbGUgZmlsZTogJHtmfWApO1xuICAgICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpO1xuXG4gICAgICBkKGUuc3RhY2spO1xuICAgIH1cbiAgfSkpKTtcblxuICBkKCdTYXZpbmcgb3V0IGNvbmZpZ3VyYXRpb24nKTtcbiAgYXdhaXQgY29tcGlsZXJIb3N0LnNhdmVDb25maWd1cmF0aW9uKCk7XG59XG5cbmNvbnN0IGQgPSByZXF1aXJlKCdkZWJ1Zy1lbGVjdHJvbicpKCdlbGVjdHJvbi1jb21waWxlJyk7XG5cbmNvbnN0IHlhcmdzID0gcmVxdWlyZSgneWFyZ3MnKVxuICAudXNhZ2UoJ1VzYWdlOiBlbGVjdHJvbi1jb21waWxlIC0tYXBwZGlyIFtyb290LWFwcC1kaXJdIHBhdGhzLi4uJylcbiAgLmFsaWFzKCdhJywgJ2FwcGRpcicpXG4gIC5kZXNjcmliZSgnYScsICdUaGUgdG9wLWxldmVsIGFwcGxpY2F0aW9uIGRpcmVjdG9yeSAoaS5lLiB3aGVyZSB5b3VyIHBhY2thZ2UuanNvbiBpcyknKVxuICAuZGVmYXVsdCgnYScsIHByb2Nlc3MuY3dkKCkpXG4gIC5hbGlhcygnYycsICdjYWNoZWRpcicpXG4gIC5kZXNjcmliZSgnYycsICdUaGUgZGlyZWN0b3J5IHRvIHB1dCB0aGUgY2FjaGUnKVxuICAuZGVmYXVsdCgnYycsICcuY2FjaGUnKVxuICAuaGVscCgnaCcpXG4gIC5hbGlhcygnaCcsICdoZWxwJylcbiAgLmVwaWxvZygnQ29weXJpZ2h0IDIwMTUnKTtcblxuaWYgKHByb2Nlc3MubWFpbk1vZHVsZSA9PT0gbW9kdWxlKSB7XG4gIGNvbnN0IGFyZ3YgPSB5YXJncy5hcmd2O1xuXG4gIGlmICghYXJndi5fIHx8IGFyZ3YuXy5sZW5ndGggPCAxKSB7XG4gICAgeWFyZ3Muc2hvd0hlbHAoKTtcbiAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICB9XG5cbiAgY29uc3Qgc291cmNlRGlycyA9IGFyZ3YuXztcbiAgY29uc3QgYXBwRGlyID0gYXJndi5hO1xuICBjb25zdCBjYWNoZURpciA9IGFyZ3YuYztcblxuICBtYWluKGFwcERpciwgc291cmNlRGlycywgY2FjaGVEaXIpXG4gICAgLnRoZW4oKCkgPT4gcHJvY2Vzcy5leGl0KDApKVxuICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UgfHwgZSk7XG4gICAgICBkKGUuc3RhY2spO1xuXG4gICAgICBjb25zb2xlLmVycm9yKFwiQ29tcGlsYXRpb24gZmFpbGVkIVxcbkZvciBleHRyYSBpbmZvcm1hdGlvbiwgc2V0IHRoZSBERUJVRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byAnKidcIik7XG4gICAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICAgIH0pO1xufVxuIl19