UNPKG

2.65 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.startDevServerAsync = startDevServerAsync;
7function _config() {
8 const data = require("@expo/config");
9 _config = function () {
10 return data;
11 };
12 return data;
13}
14function _devServer() {
15 const data = require("@expo/dev-server");
16 _devServer = function () {
17 return data;
18 };
19 return data;
20}
21function _internal() {
22 const data = require("../internal");
23 _internal = function () {
24 return data;
25 };
26 return data;
27}
28async function startDevServerAsync(projectRoot, startOptions) {
29 (0, _internal().assertValidProjectRoot)(projectRoot);
30 let port;
31 if (startOptions.metroPort != null) {
32 // If the manually defined port is busy then an error should be thrown
33 port = startOptions.metroPort;
34 } else {
35 port = startOptions.devClient ? Number(process.env.RCT_METRO_PORT) || 8081 : await (0, _internal().getFreePortAsync)(startOptions.metroPort || 19000);
36 }
37 await _internal().ProjectSettings.setPackagerInfoAsync(projectRoot, {
38 expoServerPort: port,
39 packagerPort: port
40 });
41 const options = {
42 port,
43 logger: _internal().ProjectUtils.getLogger(projectRoot)
44 };
45 if (startOptions.reset) {
46 options.resetCache = true;
47 }
48 if (startOptions.maxWorkers != null) {
49 options.maxWorkers = startOptions.maxWorkers;
50 }
51
52 // TODO: reduce getConfig calls
53 const projectConfig = (0, _config().getConfig)(projectRoot, {
54 skipSDKVersionRequirement: true
55 });
56
57 // Use the unversioned metro config.
58 options.unversioned = !projectConfig.exp.sdkVersion || projectConfig.exp.sdkVersion === 'UNVERSIONED';
59 const {
60 server,
61 middleware,
62 messageSocket
63 } = await (0, _devServer().runMetroDevServerAsync)(projectRoot, options);
64 const useExpoUpdatesManifest = startOptions.forceManifestType === 'expo-updates';
65 // We need the manifest handler to be the first middleware to run so our
66 // routes take precedence over static files. For example, the manifest is
67 // served from '/' and if the user has an index.html file in their project
68 // then the manifest handler will never run, the static middleware will run
69 // and serve index.html instead of the manifest.
70 // https://github.com/expo/expo/issues/13114
71 (0, _devServer().prependMiddleware)(middleware, useExpoUpdatesManifest ? _internal().ExpoUpdatesManifestHandler.getManifestHandler(projectRoot) : _internal().ManifestHandler.getManifestHandler(projectRoot));
72 middleware.use(_internal().LoadingPageHandler.getLoadingPageHandler(projectRoot));
73 return [server, middleware, messageSocket];
74}
75//# sourceMappingURL=startDevServerAsync.js.map
\No newline at end of file