electron-forge
Version:
A complete tool for building modern Electron applications
149 lines (115 loc) • 13.9 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.airbnbDeps = exports.standardDeps = exports.exactDevDeps = exports.devDeps = exports.deps = undefined;
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _bluebird = require('bluebird');
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _fsExtra = require('fs-extra');
var _fsExtra2 = _interopRequireDefault(_fsExtra);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _username = require('username');
var _username2 = _interopRequireDefault(_username);
var _forgeConfig = require('../util/forge-config');
var _installDependencies = require('../util/install-dependencies');
var _installDependencies2 = _interopRequireDefault(_installDependencies);
var _readPackageJson = require('../util/read-package-json');
var _readPackageJson2 = _interopRequireDefault(_readPackageJson);
var _oraHandler = require('../util/ora-handler');
var _oraHandler2 = _interopRequireDefault(_oraHandler);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const d = (0, _debug2.default)('electron-forge:init:npm');
const deps = exports.deps = ['electron-compile', 'electron-squirrel-startup'];
const devDeps = exports.devDeps = ['babel-preset-env', 'babel-preset-react', 'babel-plugin-transform-async-to-generator', 'electron-forge'];
const exactDevDeps = exports.exactDevDeps = ['electron-prebuilt-compile'];
const standardDeps = exports.standardDeps = ['standard'];
const airbnbDeps = exports.airbnbDeps = ['eslint@^3', 'eslint-config-airbnb@^15', 'eslint-plugin-import@^2', 'eslint-plugin-jsx-a11y@^5', 'eslint-plugin-react@^7'];
exports.default = (() => {
var _ref = (0, _bluebird.coroutine)(function* (dir, lintStyle) {
yield (0, _oraHandler2.default)('Initializing NPM Module', (0, _bluebird.coroutine)(function* () {
const packageJSON = yield (0, _readPackageJson2.default)(_path2.default.resolve(__dirname, '../../tmpl'));
packageJSON.productName = packageJSON.name = _path2.default.basename(dir).toLowerCase();
packageJSON.author = yield (0, _username2.default)();
(0, _forgeConfig.setInitialForgeConfig)(packageJSON);
switch (lintStyle) {
case 'standard':
packageJSON.scripts.lint = 'standard';
break;
case 'airbnb':
packageJSON.scripts.lint = 'eslint src --color';
break;
default:
packageJSON.scripts.lint = 'echo "No linting configured"';
break;
}
d('writing package.json to:', dir);
yield _fsExtra2.default.writeJson(_path2.default.resolve(dir, 'package.json'), packageJSON, { spaces: 2 });
}));
yield (0, _oraHandler2.default)('Installing NPM Dependencies', (0, _bluebird.coroutine)(function* () {
d('installing dependencies');
yield (0, _installDependencies2.default)(dir, deps);
d('installing devDependencies');
yield (0, _installDependencies2.default)(dir, devDeps, true);
d('installing exact dependencies');
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = (0, _getIterator3.default)(exactDevDeps), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
const packageName = _step.value;
yield (0, _installDependencies2.default)(dir, [packageName], true, true);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
switch (lintStyle) {
case 'standard':
d('installing standard linting dependencies');
yield (0, _installDependencies2.default)(dir, standardDeps, true);
break;
case 'airbnb':
d('installing airbnb linting dependencies');
yield (0, _installDependencies2.default)(dir, airbnbDeps, true);
break;
default:
d('not installing linting deps');
break;
}
// NB: For babel-preset-env to work correctly, it needs to know the
// actual version of Electron that we installed
const content = yield _fsExtra2.default.readJson(_path2.default.join(dir, '.compilerc'), 'utf8');
const electronPrebuilt = require(_path2.default.join(dir, 'node_modules', 'electron-prebuilt-compile', 'package.json'));
var _arr = ['development', 'production'];
for (var _i = 0; _i < _arr.length; _i++) {
const profile = _arr[_i];
const envTarget = content.env[profile]['application/javascript'].presets.find(function (x) {
return x[0] === 'env';
});
// parseFloat strips the patch version
// parseFloat('1.3.2') === 1.3
// Note: This won't work if the minor version ever gets higher than 9
envTarget[1].targets.electron = parseFloat(electronPrebuilt.version).toFixed(1).toString();
}
yield _fsExtra2.default.writeJson(_path2.default.join(dir, '.compilerc'), content, { spaces: 2 });
}));
});
return function (_x, _x2) {
return _ref.apply(this, arguments);
};
})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluaXQvaW5pdC1ucG0uanMiXSwibmFtZXMiOlsiZCIsImRlcHMiLCJkZXZEZXBzIiwiZXhhY3REZXZEZXBzIiwic3RhbmRhcmREZXBzIiwiYWlyYm5iRGVwcyIsImRpciIsImxpbnRTdHlsZSIsInBhY2thZ2VKU09OIiwicGF0aCIsInJlc29sdmUiLCJfX2Rpcm5hbWUiLCJwcm9kdWN0TmFtZSIsIm5hbWUiLCJiYXNlbmFtZSIsInRvTG93ZXJDYXNlIiwiYXV0aG9yIiwic2NyaXB0cyIsImxpbnQiLCJmcyIsIndyaXRlSnNvbiIsInNwYWNlcyIsInBhY2thZ2VOYW1lIiwiY29udGVudCIsInJlYWRKc29uIiwiam9pbiIsImVsZWN0cm9uUHJlYnVpbHQiLCJyZXF1aXJlIiwicHJvZmlsZSIsImVudlRhcmdldCIsImVudiIsInByZXNldHMiLCJmaW5kIiwieCIsInRhcmdldHMiLCJlbGVjdHJvbiIsInBhcnNlRmxvYXQiLCJ2ZXJzaW9uIiwidG9GaXhlZCIsInRvU3RyaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBLE1BQU1BLElBQUkscUJBQU0seUJBQU4sQ0FBVjs7QUFFTyxNQUFNQyxzQkFBTyxDQUFDLGtCQUFELEVBQXFCLDJCQUFyQixDQUFiO0FBQ0EsTUFBTUMsNEJBQVUsQ0FBQyxrQkFBRCxFQUFxQixvQkFBckIsRUFBMkMsMkNBQTNDLEVBQXdGLGdCQUF4RixDQUFoQjtBQUNBLE1BQU1DLHNDQUFlLENBQUMsMkJBQUQsQ0FBckI7QUFDQSxNQUFNQyxzQ0FBZSxDQUFDLFVBQUQsQ0FBckI7QUFDQSxNQUFNQyxrQ0FBYSxDQUFDLFdBQUQsRUFBYywwQkFBZCxFQUEwQyx5QkFBMUMsRUFDeEIsMkJBRHdCLEVBQ0ssd0JBREwsQ0FBbkI7OztzQ0FHUSxXQUFPQyxHQUFQLEVBQVlDLFNBQVosRUFBMEI7QUFDdkMsVUFBTSww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cEIsa0JBQUdDLFNBQUgsQ0FBYVgsZUFBS2dCLElBQUwsQ0FBVW5CLEdBQVYsRUFBZSxZQUFmLENBQWIsRUFBMkNpQixPQUEzQyxFQUFvRCxFQUFFRixRQUFRLENBQVYsRUFBcEQsQ0FBTjtBQUNELEtBekNLLEVBQU47QUEwQ0QsRyIsImZpbGUiOiJpbml0L2luaXQtbnBtLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB1c2VybmFtZSBmcm9tICd1c2VybmFtZSc7XG5cbmltcG9ydCB7IHNldEluaXRpYWxGb3JnZUNvbmZpZyB9IGZyb20gJy4uL3V0aWwvZm9yZ2UtY29uZmlnJztcbmltcG9ydCBpbnN0YWxsRGVwTGlzdCBmcm9tICcuLi91dGlsL2luc3RhbGwtZGVwZW5kZW5jaWVzJztcbmltcG9ydCByZWFkUGFja2FnZUpTT04gZnJvbSAnLi4vdXRpbC9yZWFkLXBhY2thZ2UtanNvbic7XG5pbXBvcnQgYXN5bmNPcmEgZnJvbSAnLi4vdXRpbC9vcmEtaGFuZGxlcic7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnZWxlY3Ryb24tZm9yZ2U6aW5pdDpucG0nKTtcblxuZXhwb3J0IGNvbnN0IGRlcHMgPSBbJ2VsZWN0cm9uLWNvbXBpbGUnLCAnZWxlY3Ryb24tc3F1aXJyZWwtc3RhcnR1cCddO1xuZXhwb3J0IGNvbnN0IGRldkRlcHMgPSBbJ2JhYmVsLXByZXNldC1lbnYnLCAnYmFiZWwtcHJlc2V0LXJlYWN0JywgJ2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tYXN5bmMtdG8tZ2VuZXJhdG9yJywgJ2VsZWN0cm9uLWZvcmdlJ107XG5leHBvcnQgY29uc3QgZXhhY3REZXZEZXBzID0gWydlbGVjdHJvbi1wcmVidWlsdC1jb21waWxlJ107XG5leHBvcnQgY29uc3Qgc3RhbmRhcmREZXBzID0gWydzdGFuZGFyZCddO1xuZXhwb3J0IGNvbnN0IGFpcmJuYkRlcHMgPSBbJ2VzbGludEBeMycsICdlc2xpbnQtY29uZmlnLWFpcmJuYkBeMTUnLCAnZXNsaW50LXBsdWdpbi1pbXBvcnRAXjInLFxuICAnZXNsaW50LXBsdWdpbi1qc3gtYTExeUBeNScsICdlc2xpbnQtcGx1Z2luLXJlYWN0QF43J107XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIChkaXIsIGxpbnRTdHlsZSkgPT4ge1xuICBhd2FpdCBhc3luY09yYSgnSW5pdGlhbGl6aW5nIE5QTSBNb2R1bGUnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGFja2FnZUpTT04gPSBhd2FpdCByZWFkUGFja2FnZUpTT04ocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uLy4uL3RtcGwnKSk7XG4gICAgcGFja2FnZUpTT04ucHJvZHVjdE5hbWUgPSBwYWNrYWdlSlNPTi5uYW1lID0gcGF0aC5iYXNlbmFtZShkaXIpLnRvTG93ZXJDYXNlKCk7XG4gICAgcGFja2FnZUpTT04uYXV0aG9yID0gYXdhaXQgdXNlcm5hbWUoKTtcbiAgICBzZXRJbml0aWFsRm9yZ2VDb25maWcocGFja2FnZUpTT04pO1xuXG4gICAgc3dpdGNoIChsaW50U3R5bGUpIHtcbiAgICAgIGNhc2UgJ3N0YW5kYXJkJzpcbiAgICAgICAgcGFja2FnZUpTT04uc2NyaXB0cy5saW50ID0gJ3N0YW5kYXJkJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhaXJibmInOlxuICAgICAgICBwYWNrYWdlSlNPTi5zY3JpcHRzLmxpbnQgPSAnZXNsaW50IHNyYyAtLWNvbG9yJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBwYWNrYWdlSlNPTi5zY3JpcHRzLmxpbnQgPSAnZWNobyBcIk5vIGxpbnRpbmcgY29uZmlndXJlZFwiJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGQoJ3dyaXRpbmcgcGFja2FnZS5qc29uIHRvOicsIGRpcik7XG4gICAgYXdhaXQgZnMud3JpdGVKc29uKHBhdGgucmVzb2x2ZShkaXIsICdwYWNrYWdlLmpzb24nKSwgcGFja2FnZUpTT04sIHsgc3BhY2VzOiAyIH0pO1xuICB9KTtcblxuICBhd2FpdCBhc3luY09yYSgnSW5zdGFsbGluZyBOUE0gRGVwZW5kZW5jaWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGQoJ2luc3RhbGxpbmcgZGVwZW5kZW5jaWVzJyk7XG4gICAgYXdhaXQgaW5zdGFsbERlcExpc3QoZGlyLCBkZXBzKTtcblxuICAgIGQoJ2luc3RhbGxpbmcgZGV2RGVwZW5kZW5jaWVzJyk7XG4gICAgYXdhaXQgaW5zdGFsbERlcExpc3QoZGlyLCBkZXZEZXBzLCB0cnVlKTtcblxuICAgIGQoJ2luc3RhbGxpbmcgZXhhY3QgZGVwZW5kZW5jaWVzJyk7XG4gICAgZm9yIChjb25zdCBwYWNrYWdlTmFtZSBvZiBleGFjdERldkRlcHMpIHtcbiAgICAgIGF3YWl0IGluc3RhbGxEZXBMaXN0KGRpciwgW3BhY2thZ2VOYW1lXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChsaW50U3R5bGUpIHtcbiAgICAgIGNhc2UgJ3N0YW5kYXJkJzpcbiAgICAgICAgZCgnaW5zdGFsbGluZyBzdGFuZGFyZCBsaW50aW5nIGRlcGVuZGVuY2llcycpO1xuICAgICAgICBhd2FpdCBpbnN0YWxsRGVwTGlzdChkaXIsIHN0YW5kYXJkRGVwcywgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWlyYm5iJzpcbiAgICAgICAgZCgnaW5zdGFsbGluZyBhaXJibmIgbGludGluZyBkZXBlbmRlbmNpZXMnKTtcbiAgICAgICAgYXdhaXQgaW5zdGFsbERlcExpc3QoZGlyLCBhaXJibmJEZXBzLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBkKCdub3QgaW5zdGFsbGluZyBsaW50aW5nIGRlcHMnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gTkI6IEZvciBiYWJlbC1wcmVzZXQtZW52IHRvIHdvcmsgY29ycmVjdGx5LCBpdCBuZWVkcyB0byBrbm93IHRoZVxuICAgIC8vIGFjdHVhbCB2ZXJzaW9uIG9mIEVsZWN0cm9uIHRoYXQgd2UgaW5zdGFsbGVkXG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzLnJlYWRKc29uKHBhdGguam9pbihkaXIsICcuY29tcGlsZXJjJyksICd1dGY4Jyk7XG4gICAgY29uc3QgZWxlY3Ryb25QcmVidWlsdCA9IHJlcXVpcmUoXG4gICAgICBwYXRoLmpvaW4oZGlyLCAnbm9kZV9tb2R1bGVzJywgJ2VsZWN0cm9uLXByZWJ1aWx0LWNvbXBpbGUnLCAncGFja2FnZS5qc29uJykpO1xuXG4gICAgZm9yIChjb25zdCBwcm9maWxlIG9mIFsnZGV2ZWxvcG1lbnQnLCAncHJvZHVjdGlvbiddKSB7XG4gICAgICBjb25zdCBlbnZUYXJnZXQgPSBjb250ZW50LmVudltwcm9maWxlXVsnYXBwbGljYXRpb24vamF2YXNjcmlwdCddLnByZXNldHMuZmluZCh4ID0+IHhbMF0gPT09ICdlbnYnKTtcbiAgICAgIC8vIHBhcnNlRmxvYXQgc3RyaXBzIHRoZSBwYXRjaCB2ZXJzaW9uXG4gICAgICAvLyBwYXJzZUZsb2F0KCcxLjMuMicpID09PSAxLjNcbiAgICAgIC8vIE5vdGU6IFRoaXMgd29uJ3Qgd29yayBpZiB0aGUgbWlub3IgdmVyc2lvbiBldmVyIGdldHMgaGlnaGVyIHRoYW4gOVxuICAgICAgZW52VGFyZ2V0WzFdLnRhcmdldHMuZWxlY3Ryb24gPSBwYXJzZUZsb2F0KGVsZWN0cm9uUHJlYnVpbHQudmVyc2lvbikudG9GaXhlZCgxKS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGF3YWl0IGZzLndyaXRlSnNvbihwYXRoLmpvaW4oZGlyLCAnLmNvbXBpbGVyYycpLCBjb250ZW50LCB7IHNwYWNlczogMiB9KTtcbiAgfSk7XG59O1xuIl19