react-cosmos
Version:
CLI for running React Cosmos inside webpack-powered apps
136 lines (102 loc) • 5.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getUserWebpackConfig = getUserWebpackConfig;
var _path = _interopRequireDefault(require("path"));
var _cli = require("../../../shared/cli");
var _fs = require("../../../shared/fs");
var _webpack = require("../cosmosConfig/webpack");
var _getDefaultWebpackConfig = require("./getDefaultWebpackConfig");
var _getWebpackNodeEnv = require("./getWebpackNodeEnv");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function getUserWebpackConfig(_x, _x2) {
return _getUserWebpackConfig.apply(this, arguments);
}
function _getUserWebpackConfig() {
_getUserWebpackConfig = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(cosmosConfig, userWebpack) {
var baseWebpackConfig, _createWebpackCosmosC, overridePath, relPath, webpackOverride;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return getBaseWebpackConfig(cosmosConfig, userWebpack);
case 2:
baseWebpackConfig = _context.sent;
_createWebpackCosmosC = (0, _webpack.createWebpackCosmosConfig)(cosmosConfig), overridePath = _createWebpackCosmosC.overridePath;
if (!(!overridePath || !(0, _fs.moduleExists)(overridePath))) {
_context.next = 6;
break;
}
return _context.abrupt("return", baseWebpackConfig);
case 6:
relPath = _path.default.relative(process.cwd(), overridePath);
console.log("[Cosmos] Overriding webpack config at ".concat(relPath));
webpackOverride = getDefaultExport((0, _fs.requireModule)(overridePath));
return _context.abrupt("return", webpackOverride(baseWebpackConfig, (0, _getWebpackNodeEnv.getWebpackNodeEnv)()));
case 10:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _getUserWebpackConfig.apply(this, arguments);
}
function getBaseWebpackConfig(_x3, _x4) {
return _getBaseWebpackConfig.apply(this, arguments);
} // Get "default" export from either an ES or CJS module
// More context: https://github.com/react-cosmos/react-cosmos/issues/895
function _getBaseWebpackConfig() {
_getBaseWebpackConfig = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(cosmosConfig, userWebpack) {
var rootDir, _createWebpackCosmosC2, configPath, relPath, userConfigExport, cliArgs;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
rootDir = cosmosConfig.rootDir;
_createWebpackCosmosC2 = (0, _webpack.createWebpackCosmosConfig)(cosmosConfig), configPath = _createWebpackCosmosC2.configPath;
if (!(!configPath || !(0, _fs.moduleExists)(configPath))) {
_context2.next = 5;
break;
}
console.log('[Cosmos] Using default webpack config');
return _context2.abrupt("return", (0, _getDefaultWebpackConfig.getDefaultWebpackConfig)(userWebpack, rootDir));
case 5:
relPath = _path.default.relative(process.cwd(), configPath);
console.log("[Cosmos] Using webpack config found at ".concat(relPath));
userConfigExport = getDefaultExport((0, _fs.requireModule)(configPath));
cliArgs = (0, _cli.getCliArgs)();
if (!(typeof userConfigExport === 'function')) {
_context2.next = 15;
break;
}
_context2.next = 12;
return userConfigExport(cliArgs.env || (0, _getWebpackNodeEnv.getWebpackNodeEnv)(), cliArgs);
case 12:
_context2.t0 = _context2.sent;
_context2.next = 16;
break;
case 15:
_context2.t0 = userConfigExport;
case 16:
return _context2.abrupt("return", _context2.t0);
case 17:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return _getBaseWebpackConfig.apply(this, arguments);
}
function getDefaultExport(module) {
if (_typeof(module) === 'object' && 'default' in module) {
return module.default;
}
return module;
}