You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.6 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.startDevServerAsync = startDevServerAsync;
function _config() {
const data = require("@expo/config");
_config = function () {
return data;
};
return data;
}
function _devServer() {
const data = require("@expo/dev-server");
_devServer = function () {
return data;
};
return data;
}
function _internal() {
const data = require("../internal");
_internal = function () {
return data;
};
return data;
}
async function startDevServerAsync(projectRoot, startOptions) {
(0, _internal().assertValidProjectRoot)(projectRoot);
let port;
if (startOptions.metroPort != null) {
// If the manually defined port is busy then an error should be thrown
port = startOptions.metroPort;
} else {
port = startOptions.devClient ? Number(process.env.RCT_METRO_PORT) || 8081 : await (0, _internal().getFreePortAsync)(startOptions.metroPort || 19000);
}
await _internal().ProjectSettings.setPackagerInfoAsync(projectRoot, {
expoServerPort: port,
packagerPort: port
});
const options = {
port,
logger: _internal().ProjectUtils.getLogger(projectRoot),
// @deprecated
target: startOptions.target
};
if (startOptions.reset) {
options.resetCache = true;
}
if (startOptions.maxWorkers != null) {
options.maxWorkers = startOptions.maxWorkers;
}
// TODO: reduce getConfig calls
const projectConfig = (0, _config().getConfig)(projectRoot, {
skipSDKVersionRequirement: true
});
// Use the unversioned metro config.
options.unversioned = !projectConfig.exp.sdkVersion || projectConfig.exp.sdkVersion === 'UNVERSIONED';
const {
server,
middleware,
messageSocket
} = await (0, _devServer().runMetroDevServerAsync)(projectRoot, options);
const useExpoUpdatesManifest = startOptions.forceManifestType === 'expo-updates';
// We need the manifest handler to be the first middleware to run so our
// routes take precedence over static files. For example, the manifest is
// served from '/' and if the user has an index.html file in their project
// then the manifest handler will never run, the static middleware will run
// and serve index.html instead of the manifest.
// https://github.com/expo/expo/issues/13114
(0, _devServer().prependMiddleware)(middleware, useExpoUpdatesManifest ? _internal().ExpoUpdatesManifestHandler.getManifestHandler(projectRoot) : _internal().ManifestHandler.getManifestHandler(projectRoot));
middleware.use(_internal().LoadingPageHandler.getLoadingPageHandler(projectRoot));
return [server, middleware, messageSocket];
}
//# sourceMappingURL=startDevServerAsync.js.map