@rnv/engine-rn-next
Version:
ReNative Engine to build next based platforms with react native support.
176 lines • 9.78 kB
JavaScript
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
;