electron-compile
Version:
Electron supporting package to compile JS and CSS in Electron applications
169 lines (123 loc) • 10.7 kB
JavaScript
;
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 = function () {
var ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(appDir, sourceDirs) {
var compilerHost, rootCacheDir;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
compilerHost = null;
rootCacheDir = _path2.default.join(appDir, '.cache');
_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 = 5;
_context2.next = 8;
return (0, _configParser.createCompilerHostFromProjectRoot)(appDir, rootCacheDir);
case 8:
compilerHost = _context2.sent;
_context2.next = 16;
break;
case 11:
_context2.prev = 11;
_context2.t0 = _context2['catch'](5);
console.error('Couldn\'t set up compilers: ' + _context2.t0.message);
d(_context2.t0.stack);
throw _context2.t0;
case 16:
_context2.next = 18;
return _promise2.default.all(_lodash2.default.map(sourceDirs, function (dir) {
return (0, _forAllFiles.forAllFiles)(dir, function () {
var _this = this;
var ref = (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 (_x3) {
return ref.apply(this, arguments);
};
}());
}));
case 18:
d('Saving out configuration');
_context2.next = 21;
return compilerHost.saveConfiguration();
case 21:
case 'end':
return _context2.stop();
}
}
}, _callee2, this, [[5, 11]]);
}));
return function main(_x, _x2) {
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 _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
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-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)').help('h').alias('h', 'help').epilog('Copyright 2015');
var argv = yargs.argv;
if (!argv._ || argv._.length < 1) {
yargs.showHelp();
process.exit(-1);
}
var sourceDirs = argv._;
var appDir = argv.a || process.env.PWD;
main(appDir, sourceDirs).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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1RUFvQkEsa0JBQW9CLE1BQXBCLEVBQTRCLFVBQTVCO1FBQ00sY0FDQTs7Ozs7QUFEQSwyQkFBZTtBQUNmLDJCQUFlLGVBQUssSUFBTCxDQUFVLE1BQVYsRUFBa0IsUUFBbEI7O0FBQ25CLDZCQUFPLElBQVAsQ0FBWSxZQUFaOztBQUVBLGdCQUFJLFFBQVEsR0FBUixDQUFZLFFBQVosS0FBeUIsWUFBekIsRUFBdUM7QUFDekMsc0JBQVEsR0FBUix3QkFBZ0MsUUFBUSxHQUFSLENBQVksUUFBWixJQUF3QixhQUF4QixDQUFoQyxFQUR5QzthQUEzQzs7QUFJQSx5QkFBVyxnQkFBVyx5QkFBZSxVQUFmLENBQXRCOzs7bUJBRXVCLHFEQUFrQyxNQUFsQyxFQUEwQyxZQUExQzs7O0FBQXJCOzs7Ozs7OztBQUVBLG9CQUFRLEtBQVIsa0NBQTRDLGFBQUUsT0FBRixDQUE1QztBQUNBLGNBQUUsYUFBRSxLQUFGLENBQUY7Ozs7OzttQkFLSSxrQkFBUSxHQUFSLENBQVksaUJBQUUsR0FBRixDQUFNLFVBQU4sRUFBa0IsVUFBQyxHQUFEO3FCQUFTLDhCQUFZLEdBQVo7OztxRkFBaUIsaUJBQU8sQ0FBUDs7Ozs7OztBQUUxRCwwREFBOEIsQ0FBOUI7O2lDQUNNLGFBQWEsT0FBYixDQUFxQixDQUFyQjs7Ozs7Ozs7OztBQUVOLGtDQUFRLEtBQVIsOEJBQXlDLENBQXpDO0FBQ0Esa0NBQVEsS0FBUixDQUFjLFlBQUUsT0FBRixDQUFkOztBQUVBLDRCQUFFLFlBQUUsS0FBRixDQUFGOzs7Ozs7OztpQkFSMEQ7Ozs7aUJBQWpCO2FBQVQsQ0FBOUI7Ozs7QUFZTixjQUFFLDBCQUFGOzttQkFDTSxhQUFhLGlCQUFiOzs7Ozs7OztHQWhDUjtrQkFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVZmLFFBQVEsRUFBUixDQUFXLG9CQUFYLEVBQWlDLFVBQUMsQ0FBRCxFQUFPO0FBQ3RDLElBQUUsRUFBRSxPQUFGLElBQWEsQ0FBYixDQUFGLENBRHNDO0FBRXRDLElBQUUsRUFBRSxLQUFGLElBQVcsRUFBWCxDQUFGLENBRnNDO0NBQVAsQ0FBakM7O0FBS0EsUUFBUSxFQUFSLENBQVcsbUJBQVgsRUFBZ0MsVUFBQyxDQUFELEVBQU87QUFDckMsSUFBRSxFQUFFLE9BQUYsSUFBYSxDQUFiLENBQUYsQ0FEcUM7QUFFckMsSUFBRSxFQUFFLEtBQUYsSUFBVyxFQUFYLENBQUYsQ0FGcUM7Q0FBUCxDQUFoQzs7QUF3Q0EsSUFBTSxJQUFJLFFBQVEsT0FBUixFQUFpQixrQkFBakIsQ0FBSjs7QUFFTixJQUFNLFFBQVEsUUFBUSxPQUFSLEVBQ1gsS0FEVyxDQUNMLDBEQURLLEVBRVgsS0FGVyxDQUVMLEdBRkssRUFFQSxRQUZBLEVBR1gsUUFIVyxDQUdGLEdBSEUsRUFHRyx1RUFISCxFQUlYLElBSlcsQ0FJTixHQUpNLEVBS1gsS0FMVyxDQUtMLEdBTEssRUFLQSxNQUxBLEVBTVgsTUFOVyxDQU1KLGdCQU5JLENBQVI7O0FBUU4sSUFBTSxPQUFPLE1BQU0sSUFBTjs7QUFFYixJQUFJLENBQUMsS0FBSyxDQUFMLElBQVUsS0FBSyxDQUFMLENBQU8sTUFBUCxHQUFnQixDQUFoQixFQUFtQjtBQUNoQyxRQUFNLFFBQU4sR0FEZ0M7QUFFaEMsVUFBUSxJQUFSLENBQWEsQ0FBQyxDQUFELENBQWIsQ0FGZ0M7Q0FBbEM7O0FBS0EsSUFBTSxhQUFhLEtBQUssQ0FBTDtBQUNuQixJQUFNLFNBQVMsS0FBSyxDQUFMLElBQVUsUUFBUSxHQUFSLENBQVksR0FBWjs7QUFFekIsS0FBSyxNQUFMLEVBQWEsVUFBYixFQUNHLElBREgsQ0FDUTtTQUFNLFFBQVEsSUFBUixDQUFhLENBQWI7Q0FBTixDQURSLENBRUcsS0FGSCxDQUVTLFVBQUMsQ0FBRCxFQUFPO0FBQ1osVUFBUSxLQUFSLENBQWMsRUFBRSxPQUFGLElBQWEsQ0FBYixDQUFkLENBRFk7QUFFWixJQUFFLEVBQUUsS0FBRixDQUFGLENBRlk7O0FBSVosVUFBUSxLQUFSLENBQWMsdUZBQWQsRUFKWTtBQUtaLFVBQVEsSUFBUixDQUFhLENBQUMsQ0FBRCxDQUFiLENBTFk7Q0FBUCxDQUZUIiwiZmlsZSI6ImNsaS5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgJy4vYmFiZWwtbWF5YmVmaWxsJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG1rZGlycCBmcm9tICdta2RpcnAnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHtjcmVhdGVDb21waWxlckhvc3RGcm9tUHJvamVjdFJvb3R9IGZyb20gJy4vY29uZmlnLXBhcnNlcic7XG5pbXBvcnQge2ZvckFsbEZpbGVzfSBmcm9tICcuL2Zvci1hbGwtZmlsZXMnO1xuXG5wcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZSkgPT4ge1xuICBkKGUubWVzc2FnZSB8fCBlKTtcbiAgZChlLnN0YWNrIHx8ICcnKTtcbn0pO1xuXG5wcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlKSA9PiB7XG4gIGQoZS5tZXNzYWdlIHx8IGUpO1xuICBkKGUuc3RhY2sgfHwgJycpO1xufSk7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXBwRGlyLCBzb3VyY2VEaXJzKSB7XG4gIGxldCBjb21waWxlckhvc3QgPSBudWxsO1xuICBsZXQgcm9vdENhY2hlRGlyID0gcGF0aC5qb2luKGFwcERpciwgJy5jYWNoZScpO1xuICBta2RpcnAuc3luYyhyb290Q2FjaGVEaXIpO1xuICBcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zb2xlLmxvZyhgVXNpbmcgTk9ERV9FTlYgPSAke3Byb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdkZXZlbG9wbWVudCd9YCk7XG4gIH1cbiAgXG4gIGQoYG1haW46ICR7YXBwRGlyfSwgJHtKU09OLnN0cmluZ2lmeShzb3VyY2VEaXJzKX1gKTtcbiAgdHJ5IHtcbiAgICBjb21waWxlckhvc3QgPSBhd2FpdCBjcmVhdGVDb21waWxlckhvc3RGcm9tUHJvamVjdFJvb3QoYXBwRGlyLCByb290Q2FjaGVEaXIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihgQ291bGRuJ3Qgc2V0IHVwIGNvbXBpbGVyczogJHtlLm1lc3NhZ2V9YCk7XG4gICAgZChlLnN0YWNrKTtcblxuICAgIHRocm93IGU7XG4gIH1cbiAgXG4gIGF3YWl0IFByb21pc2UuYWxsKF8ubWFwKHNvdXJjZURpcnMsIChkaXIpID0+IGZvckFsbEZpbGVzKGRpciwgYXN5bmMgKGYpID0+IHtcbiAgICB0cnkge1xuICAgICAgZChgU3RhcnRpbmcgY29tcGlsYXRpb24gZm9yICR7Zn1gKTtcbiAgICAgIGF3YWl0IGNvbXBpbGVySG9zdC5jb21waWxlKGYpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjb21waWxlIGZpbGU6ICR7Zn1gKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTtcblxuICAgICAgZChlLnN0YWNrKTtcbiAgICB9XG4gIH0pKSk7XG4gIFxuICBkKCdTYXZpbmcgb3V0IGNvbmZpZ3VyYXRpb24nKTtcbiAgYXdhaXQgY29tcGlsZXJIb3N0LnNhdmVDb25maWd1cmF0aW9uKCk7XG59XG5cbmNvbnN0IGQgPSByZXF1aXJlKCdkZWJ1ZycpKCdlbGVjdHJvbi1jb21waWxlJyk7XG5cbmNvbnN0IHlhcmdzID0gcmVxdWlyZSgneWFyZ3MnKVxuICAudXNhZ2UoJ1VzYWdlOiBlbGVjdHJvbi1jb21waWxlIC0tYXBwZGlyIFtyb290LWFwcC1kaXJdIHBhdGhzLi4uJylcbiAgLmFsaWFzKCdhJywgJ2FwcGRpcicpXG4gIC5kZXNjcmliZSgnYScsICdUaGUgdG9wLWxldmVsIGFwcGxpY2F0aW9uIGRpcmVjdG9yeSAoaS5lLiB3aGVyZSB5b3VyIHBhY2thZ2UuanNvbiBpcyknKVxuICAuaGVscCgnaCcpXG4gIC5hbGlhcygnaCcsICdoZWxwJylcbiAgLmVwaWxvZygnQ29weXJpZ2h0IDIwMTUnKTtcblxuY29uc3QgYXJndiA9IHlhcmdzLmFyZ3Y7XG5cbmlmICghYXJndi5fIHx8IGFyZ3YuXy5sZW5ndGggPCAxKSB7XG4gIHlhcmdzLnNob3dIZWxwKCk7XG4gIHByb2Nlc3MuZXhpdCgtMSk7XG59XG5cbmNvbnN0IHNvdXJjZURpcnMgPSBhcmd2Ll87XG5jb25zdCBhcHBEaXIgPSBhcmd2LmEgfHwgcHJvY2Vzcy5lbnYuUFdEO1xuXG5tYWluKGFwcERpciwgc291cmNlRGlycylcbiAgLnRoZW4oKCkgPT4gcHJvY2Vzcy5leGl0KDApKVxuICAuY2F0Y2goKGUpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSB8fCBlKTtcbiAgICBkKGUuc3RhY2spO1xuICAgIFxuICAgIGNvbnNvbGUuZXJyb3IoXCJDb21waWxhdGlvbiBmYWlsZWQhXFxuRm9yIGV4dHJhIGluZm9ybWF0aW9uLCBzZXQgdGhlIERFQlVHIGVudmlyb25tZW50IHZhcmlhYmxlIHRvICcqJ1wiKTtcbiAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICB9KTsgIFxuIl19