UNPKG

kkt

Version:

Create React apps with no build configuration, Cli tool for creating react apps.

226 lines (223 loc) 12.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = start; var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _fs = _interopRequireDefault(require("fs")); var _webpack = _interopRequireDefault(require("webpack")); var _evalSourceMapMiddleware = _interopRequireDefault(require("react-dev-utils/evalSourceMapMiddleware")); var _redirectServedPathMiddleware = _interopRequireDefault(require("react-dev-utils/redirectServedPathMiddleware")); var _clearConsole = _interopRequireDefault(require("react-dev-utils/clearConsole")); var _noopServiceWorkerMiddleware = _interopRequireDefault(require("react-dev-utils/noopServiceWorkerMiddleware")); var _loaderConf = require("../utils/loaderConf"); var _path = require("../utils/path"); var _paths = require("../overrides/paths"); var _openBrowser = require("../overrides/openBrowser"); var _clearConsole2 = require("../overrides/clearConsole"); var _choosePort = require("../overrides/choosePort"); var _miniCssExtractPlugin = require("../plugins/miniCssExtractPlugin"); var _cacheData = require("../utils/cacheData"); var _checkRequired = require("../overrides/checkRequired"); var _loadSourceMapWarnning = require("../plugins/loadSourceMapWarnning"); var _staticDoc = require("../plugins/staticDoc"); process.env.NODE_ENV = 'development'; var today = function today() { return new Date().toISOString().split('.')[0].replace('T', ' '); }; function start(_x) { return _start.apply(this, arguments); } function _start() { _start = (0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee(argvs) { var _ref, _ref$isNotCheckHTML, isNotCheckHTML, paths, webpackConfigPath, devServerConfigPath, createWebpackConfig, createDevServerConfig, kktrc, overrideDevServerConfig, shouldUseSourceMap, overridesHandle, webpackConf, overrideOption, overrideWebpackConf, configFactory, config, compiler, message; return (0, _regeneratorRuntime2["default"])().wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _ref = argvs || {}, _ref$isNotCheckHTML = _ref.isNotCheckHTML, isNotCheckHTML = _ref$isNotCheckHTML === void 0 ? false : _ref$isNotCheckHTML; _context.prev = 1; _context.next = 4; return (0, _paths.overridePaths)(argvs, argvs.overridePaths); case 4: paths = _context.sent; _context.next = 7; return (0, _checkRequired.checkRequiredFiles)(paths, isNotCheckHTML); case 7: webpackConfigPath = "".concat(_path.reactScripts, "/config/webpack.config").concat(!_path.isWebpackFactory ? '.dev' : ''); devServerConfigPath = "".concat(_path.reactScripts, "/config/webpackDevServer.config.js"); createWebpackConfig = require(webpackConfigPath); createDevServerConfig = require(devServerConfigPath); require('react-scripts/config/env'); _context.next = 14; return (0, _loaderConf.loaderConf)((0, _path.getConfPath)(argvs.configName)); case 14: kktrc = _context.sent; _context.next = 17; return (0, _clearConsole2.overridesClearConsole)(argvs); case 17: _context.next = 19; return (0, _openBrowser.overridesOpenBrowser)(argvs); case 19: /** Override DevServerConfig */ overrideDevServerConfig = { headers: { 'Access-Control-Allow-Origin': '*' } }; // Source maps are resource heavy and can cause out of memory issue for large source files. shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false'; overridesHandle = kktrc["default"] || argvs.overridesWebpack; if (!(overridesHandle && typeof overridesHandle === 'function')) { _context.next = 46; break; } webpackConf = createWebpackConfig('development'); _context.next = 26; return (0, _paths.overridePaths)(undefined, { proxySetup: _path.proxySetup }); case 26: if (kktrc && kktrc.proxySetup && typeof kktrc.proxySetup === 'function') { (0, _cacheData.cacheData)({ proxySetup: kktrc.proxySetup }); } overrideOption = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, argvs), {}, { devServerConfigHandle: createDevServerConfig, shouldUseSourceMap: shouldUseSourceMap, paths: paths, kktrc: kktrc }); webpackConf = argvs.overridesWebpack ? argvs.overridesWebpack(webpackConf, 'development', overrideOption) : webpackConf; webpackConf = (0, _loadSourceMapWarnning.loadSourceMapWarnning)(webpackConf); webpackConf = (0, _miniCssExtractPlugin.miniCssExtractPlugin)(webpackConf, 'development'); if (!kktrc["default"]) { _context.next = 37; break; } _context.next = 34; return overridesHandle(webpackConf, 'development', overrideOption); case 34: _context.t0 = _context.sent; _context.next = 38; break; case 37: _context.t0 = webpackConf; case 38: overrideWebpackConf = _context.t0; if (overrideWebpackConf.proxySetup && typeof overrideWebpackConf.proxySetup === 'function') { (0, _cacheData.cacheData)({ proxySetup: overrideWebpackConf.proxySetup }); delete overrideWebpackConf.proxySetup; } if (!overrideWebpackConf.devServer) { _context.next = 45; break; } _context.next = 43; return (0, _choosePort.overridesChoosePort)(Number(overrideWebpackConf.devServer.port)); case 43: overrideDevServerConfig = Object.assign(overrideDevServerConfig, overrideWebpackConf.devServer); delete overrideWebpackConf.devServer; case 45: // override config in memory require.cache[require.resolve(webpackConfigPath)].exports = function (env) { return overrideWebpackConf; }; case 46: // override config in memory require.cache[require.resolve(devServerConfigPath)].exports = function (proxy, allowedHost) { var serverConf = createDevServerConfig(proxy, allowedHost); /** * [DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE] * DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option. * (Use `node --trace-deprecation ...` to show where the warning was created) * [DEP_WEBPACK_DEV_SERVER_ON_BEFORE_SETUP_MIDDLEWARE] * DeprecationWarning: 'onBeforeSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option. */ delete serverConf.onAfterSetupMiddleware; delete serverConf.onBeforeSetupMiddleware; if (kktrc && kktrc.devServer && typeof kktrc.devServer === 'function') { return kktrc.devServer((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, overrideDevServerConfig), serverConf), (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, argvs), {}, { paths: paths })); } else { serverConf = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, serverConf), overrideDevServerConfig); } delete serverConf.onAfterSetupMiddleware; delete serverConf.onBeforeSetupMiddleware; var setupMiddlewares = overrideDevServerConfig.setupMiddlewares; serverConf.setupMiddlewares = function (middlewares, devServer) { // Keep `evalSourceMapMiddleware` // middlewares before `redirectServedPath` otherwise will not have any effect // This lets us fetch source contents from webpack for the error overlay devServer.app.use((0, _evalSourceMapMiddleware["default"])(devServer)); if (_fs["default"].existsSync(paths.proxySetup)) { // This registers user provided middleware for proxy reasons require(paths.proxySetup)(devServer.app); } // Configure the `proxySetup` configuration in `.kktrc`. if (_fs["default"].existsSync(_path.proxySetup)) { require(_path.proxySetup)(devServer.app); } // Redirect to `PUBLIC_URL` or `homepage` from `package.json` if url not match devServer.app.use((0, _redirectServedPathMiddleware["default"])(paths.publicUrlOrPath)); // This service worker file is effectively a 'no-op' that will reset any // previous service worker registered for the same host:port combination. // We do this in development to avoid hitting the production cache if // it used the same host and port. // https://github.com/facebook/create-react-app/issues/2272#issuecomment-302832432 devServer.app.use((0, _noopServiceWorkerMiddleware["default"])(paths.publicUrlOrPath)); var mds = setupMiddlewares ? setupMiddlewares(middlewares, devServer) : middlewares; return (0, _staticDoc.staticDocSetupMiddlewares)(mds, devServer, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, argvs), {}, { paths: paths })); }; return serverConf; }; // For real-time output of JS, For Chrome Plugin if (argvs['watch']) { configFactory = require("".concat(_path.reactScripts, "/config/webpack.config")); config = configFactory('development'); compiler = (0, _webpack["default"])(config); compiler.watch((0, _objectSpread2["default"])({}, config.watchOptions), function (err, stats) { if (err) { console.log('❌ KKT:\x1b[31;1mERR\x1b[0m:', err); return; } if (stats.hasErrors()) { (0, _clearConsole["default"])(); console.log("\u274C KKT:\x1B[31;1mERR\x1B[0m: \x1B[35;1m".concat(today(), "\x1B[0m\n"), stats.toString()); return; } (0, _clearConsole["default"])(); console.log("\uD83D\uDE80 started! \x1B[35;1m".concat(today(), "\x1B[0m")); }); } else { // run original script require("".concat(_path.reactScripts, "/scripts/start")); } _context.next = 56; break; case 50: _context.prev = 50; _context.t1 = _context["catch"](1); message = _context.t1 && _context.t1.message ? _context.t1.message : ''; console.log('\x1b[31;1m KKT:START:ERROR: \x1b[0m\n', _context.t1); new Error("KKT:START:ERROR: \n ".concat(message)); process.exit(1); case 56: case "end": return _context.stop(); } } }, _callee, null, [[1, 50]]); })); return _start.apply(this, arguments); } module.exports = exports.default; //# sourceMappingURL=start.js.map