UNPKG

@rnv/engine-rn-next

Version:

ReNative Engine to build next based platforms with react native support.

176 lines 9.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.exportWebNext = exports.runWebDevServer = exports.buildWebNext = exports.getExportDir = exports.runWebNext = exports.configureNextIfRequired = void 0; var tslib_1 = require("tslib"); var path_1 = tslib_1.__importDefault(require("path")); var core_1 = require("@rnv/core"); var sdk_utils_1 = require("@rnv/sdk-utils"); var env_1 = require("./env"); var configureNextIfRequired = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var c, destPath; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: c = (0, core_1.getContext)(); (0, core_1.logDefault)('configureNextIfRequired'); if (!c.platform) return [2 /*return*/]; c.runtime.platformBuildsProjectPath = "".concat((0, core_1.getAppFolder)()); destPath = path_1.default.join(c.paths.project.dir, 'public'); return [4 /*yield*/, (0, core_1.copyAssetsFolder)(destPath)]; case 1: _a.sent(); return [2 /*return*/]; } }); }); }; exports.configureNextIfRequired = configureNextIfRequired; var runWebNext = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var c, port, platform, devServerHost, isPortActive, bundleAssets, resetCompleted; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: c = (0, core_1.getContext)(); port = c.runtime.port; (0, core_1.logDefault)('runWebNext', "port:".concat(port)); platform = c.platform; if (!c.platform) return [2 /*return*/]; devServerHost = (0, sdk_utils_1.getDevServerHost)(); return [4 /*yield*/, (0, sdk_utils_1.checkPortInUse)(port)]; case 1: isPortActive = _a.sent(); bundleAssets = (0, core_1.getConfigProp)('bundleAssets'); if (!!isPortActive) return [3 /*break*/, 4]; (0, core_1.logInfo)("Your ".concat((0, core_1.chalk)().bold.white(platform), " devServerHost ").concat((0, core_1.chalk)().bold.white(devServerHost), " at port ").concat((0, core_1.chalk)().bold.white(port), " is not running. Starting it up for you...")); return [4 /*yield*/, _runWebBrowser(devServerHost, port, false)]; case 2: _a.sent(); if (!bundleAssets) { (0, core_1.logSummary)({ header: 'BUNDLER STARTED' }); } return [4 /*yield*/, (0, exports.runWebDevServer)(c)]; case 3: _a.sent(); return [3 /*break*/, 10]; case 4: return [4 /*yield*/, (0, sdk_utils_1.confirmActiveBundler)()]; case 5: resetCompleted = _a.sent(); if (!resetCompleted) return [3 /*break*/, 8]; return [4 /*yield*/, _runWebBrowser(devServerHost, port, false)]; case 6: _a.sent(); if (!bundleAssets) { (0, core_1.logSummary)({ header: 'BUNDLER STARTED' }); } return [4 /*yield*/, (0, exports.runWebDevServer)(c)]; case 7: _a.sent(); return [3 /*break*/, 10]; case 8: return [4 /*yield*/, _runWebBrowser(devServerHost, port, true)]; case 9: _a.sent(); _a.label = 10; case 10: return [2 /*return*/]; } }); }); }; exports.runWebNext = runWebNext; var _runWebBrowser = function (devServerHost, port, alreadyStarted) { return new Promise(function (resolve) { var c = (0, core_1.getContext)(); (0, core_1.logDefault)('_runWebBrowser', "ip:".concat(devServerHost, " port:").concat(port, " openBrowser:").concat(!!c.runtime.shouldOpenBrowser)); if (!c.runtime.shouldOpenBrowser) return resolve(); var wait = (0, sdk_utils_1.waitForHost)('', { maxAttempts: 10, checkInterval: 1000 }) .then(function () { (0, sdk_utils_1.openBrowser)("http://".concat(devServerHost, ":").concat(port, "/")); }) .catch(function (e) { // Let's opent the browser anyway as sometimes we get timeout waiting for next to compile (0, sdk_utils_1.openBrowser)("http://".concat(devServerHost, ":").concat(port, "/")); (0, core_1.logWarning)(e); }); if (alreadyStarted) return wait; // if it's already started, return the promise so it rnv will wait, otherwise it will exit before opening the browser return resolve(); }); }; var getExportDir = function (c) { var exportDir = (0, core_1.getConfigProp)('exportDir'); var maybeAbsolutePath = exportDir || path_1.default.join((0, core_1.getAppFolder)(), 'output'); // if path is absolute, make it relative to project root. Next 14 doesn't seem to like absolute paths if (path_1.default.isAbsolute(maybeAbsolutePath)) { return path_1.default.relative(c.paths.project.dir, maybeAbsolutePath); } return maybeAbsolutePath; }; exports.getExportDir = getExportDir; var buildWebNext = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var c, nextCmnd; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: c = (0, core_1.getContext)(); (0, core_1.logDefault)('buildWebNext'); nextCmnd = "node ".concat(path_1.default .join(path_1.default.dirname(require.resolve('next/package.json')), 'dist', 'bin', 'next') .replace(/ /g, '\\ ')); // const nextCmnd = 'npx next'; return [4 /*yield*/, (0, core_1.executeAsync)("".concat(nextCmnd, " build"), { env: tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, core_1.CoreEnvVars.BASE()), core_1.CoreEnvVars.RNV_EXTENSIONS()), env_1.EnvVars.RNV_NEXT_TRANSPILE_MODULES()), env_1.EnvVars.NEXT_BASE()), })]; case 1: // const nextCmnd = 'npx next'; _a.sent(); (0, core_1.logSuccess)("Your build is located in ".concat((0, core_1.chalk)().cyan((0, exports.getExportDir)(c)), " .")); return [2 /*return*/, true]; } }); }); }; exports.buildWebNext = buildWebNext; var runWebDevServer = function (c) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var devServerHost, url, bundleAssets, opts, nextCmnd; var _a, _b; return tslib_1.__generator(this, function (_c) { (0, core_1.logDefault)('runWebDevServer'); devServerHost = (0, sdk_utils_1.getDevServerHost)(); url = (0, core_1.chalk)().cyan("http://".concat(devServerHost, ":").concat(c.runtime.port)); (0, core_1.logRaw)("\nDev server running at: ".concat(url, "\n")); bundleAssets = (0, core_1.getConfigProp)('bundleAssets'); opts = !((_b = (_a = c.program) === null || _a === void 0 ? void 0 : _a.opts()) === null || _b === void 0 ? void 0 : _b.json) ? core_1.ExecOptionsPresets.INHERIT_OUTPUT_NO_SPINNER : core_1.ExecOptionsPresets.SPINNER_FULL_ERROR_SUMMARY; nextCmnd = "node \"".concat(path_1.default.join(path_1.default.dirname(require.resolve('next/package.json')), 'dist', 'bin', 'next'), "\""); // const nextCmnd = 'npx next'; return [2 /*return*/, (0, core_1.executeAsync)("".concat(nextCmnd, " ").concat(bundleAssets ? 'start' : 'dev', " --port ").concat(c.runtime.port), tslib_1.__assign({ env: tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, core_1.CoreEnvVars.BASE()), core_1.CoreEnvVars.RNV_EXTENSIONS()), env_1.EnvVars.RNV_NEXT_TRANSPILE_MODULES()), env_1.EnvVars.NEXT_BASE()), env_1.EnvVars.NODE_ENV()) }, opts))]; }); }); }; exports.runWebDevServer = runWebDevServer; var exportWebNext = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var c, exportDir, nextCmnd; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: c = (0, core_1.getContext)(); (0, core_1.logDefault)('exportWebNext'); exportDir = (0, exports.getExportDir)(c); nextCmnd = "node ".concat(path_1.default .join(path_1.default.dirname(require.resolve('next/package.json')), 'dist', 'bin', 'next') .replace(/ /g, '\\ ')); // const nextCmnd = 'npx next'; return [4 /*yield*/, (0, core_1.executeAsync)("".concat(nextCmnd, " build"), { env: tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, core_1.CoreEnvVars.BASE()), core_1.CoreEnvVars.RNV_EXTENSIONS()), env_1.EnvVars.RNV_NEXT_TRANSPILE_MODULES()), env_1.EnvVars.NEXT_BASE()), { // building next fails if NODE_ENV is not set to production https://github.com/vercel/next.js/issues/52158 NODE_ENV: 'production' }), })]; case 1: // const nextCmnd = 'npx next'; _a.sent(); (0, core_1.logSuccess)("Your export is located in ".concat((0, core_1.chalk)().cyan(exportDir), " .")); return [2 /*return*/, true]; } }); }); }; exports.exportWebNext = exportWebNext; //# sourceMappingURL=runner.js.map