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
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
|