@expo/cli 0.7.3 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/README.md +1 -1
  2. package/build/bin/cli +17 -3
  3. package/build/bin/cli.map +1 -1
  4. package/build/src/api/getExpoGoIntermediateCertificate.js +0 -2
  5. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
  6. package/build/src/api/getProjectDevelopmentCertificate.js +0 -2
  7. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
  8. package/build/src/api/graphql/queries/AppQuery.js +39 -0
  9. package/build/src/api/graphql/queries/AppQuery.js.map +1 -0
  10. package/build/src/api/graphql/queries/UserQuery.js +10 -3
  11. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  12. package/build/src/api/graphql/types/App.js +23 -0
  13. package/build/src/api/graphql/types/App.js.map +1 -0
  14. package/build/src/api/signManifest.js +0 -12
  15. package/build/src/api/signManifest.js.map +1 -1
  16. package/build/src/api/user/UserSettings.js.map +1 -1
  17. package/build/src/api/user/user.js.map +1 -1
  18. package/build/src/config/configAsync.js +3 -0
  19. package/build/src/config/configAsync.js.map +1 -1
  20. package/build/src/customize/customizeAsync.js +3 -0
  21. package/build/src/customize/customizeAsync.js.map +1 -1
  22. package/build/src/export/createBundles.js +8 -3
  23. package/build/src/export/createBundles.js.map +1 -1
  24. package/build/src/export/embed/exportEmbedAsync.js +23 -0
  25. package/build/src/export/embed/exportEmbedAsync.js.map +1 -0
  26. package/build/src/export/embed/index.js +117 -0
  27. package/build/src/export/embed/index.js.map +1 -0
  28. package/build/src/export/embed/resolveOptions.js +63 -0
  29. package/build/src/export/embed/resolveOptions.js.map +1 -0
  30. package/build/src/export/exportApp.js +58 -31
  31. package/build/src/export/exportApp.js.map +1 -1
  32. package/build/src/export/exportAssets.js +17 -0
  33. package/build/src/export/exportAssets.js.map +1 -1
  34. package/build/src/export/exportAsync.js +3 -0
  35. package/build/src/export/exportAsync.js.map +1 -1
  36. package/build/src/export/exportStaticAsync.js +179 -0
  37. package/build/src/export/exportStaticAsync.js.map +1 -0
  38. package/build/src/export/fork-bundleAsync.js +15 -43
  39. package/build/src/export/fork-bundleAsync.js.map +1 -1
  40. package/build/src/export/html.js +21 -0
  41. package/build/src/export/html.js.map +1 -0
  42. package/build/src/export/index.js +5 -1
  43. package/build/src/export/index.js.map +1 -1
  44. package/build/src/export/printBundleSizes.js +2 -2
  45. package/build/src/export/printBundleSizes.js.map +1 -1
  46. package/build/src/export/resolveOptions.js +1 -0
  47. package/build/src/export/resolveOptions.js.map +1 -1
  48. package/build/src/export/web/exportWebAsync.js +3 -0
  49. package/build/src/export/web/exportWebAsync.js.map +1 -1
  50. package/build/src/export/writeContents.js +5 -2
  51. package/build/src/export/writeContents.js.map +1 -1
  52. package/build/src/graphql/generated.js +462 -0
  53. package/build/src/graphql/generated.js.map +1 -0
  54. package/build/src/install/checkPackages.js +6 -0
  55. package/build/src/install/checkPackages.js.map +1 -1
  56. package/build/src/install/installAsync.js +18 -1
  57. package/build/src/install/installAsync.js.map +1 -1
  58. package/build/src/prebuild/clearNativeFolder.js +6 -1
  59. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  60. package/build/src/prebuild/copyTemplateFiles.js +3 -33
  61. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  62. package/build/src/prebuild/ensureConfigAsync.js +1 -12
  63. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  64. package/build/src/prebuild/prebuildAsync.js +7 -2
  65. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  66. package/build/src/prebuild/resolveOptions.js +7 -8
  67. package/build/src/prebuild/resolveOptions.js.map +1 -1
  68. package/build/src/prebuild/resolveTemplate.js +5 -0
  69. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  70. package/build/src/prebuild/updateFromTemplate.js +6 -8
  71. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  72. package/build/src/prebuild/updatePackageJson.js +33 -47
  73. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  74. package/build/src/prebuild/validateTemplatePlatforms.js +48 -0
  75. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -0
  76. package/build/src/run/android/runAndroidAsync.js +4 -0
  77. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  78. package/build/src/run/ios/appleDevice/AppleDevice.js +25 -19
  79. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  80. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  81. package/build/src/run/ios/options/resolveNativeScheme.js +13 -4
  82. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  83. package/build/src/run/ios/runIosAsync.js +3 -0
  84. package/build/src/run/ios/runIosAsync.js.map +1 -1
  85. package/build/src/run/startBundler.js +4 -0
  86. package/build/src/run/startBundler.js.map +1 -1
  87. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  88. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +12 -6
  89. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  90. package/build/src/start/doctor/dependencies/getVersionedPackages.js +13 -2
  91. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  92. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +12 -4
  93. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  94. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +31 -5
  95. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  96. package/build/src/start/doctor/typescript/updateTSConfig.js +6 -0
  97. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  98. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +1 -0
  99. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  100. package/build/src/start/index.js +3 -1
  101. package/build/src/start/index.js.map +1 -1
  102. package/build/src/start/platforms/android/adb.js +1 -1
  103. package/build/src/start/platforms/android/adb.js.map +1 -1
  104. package/build/src/start/platforms/ios/AppleDeviceManager.js +1 -1
  105. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  106. package/build/src/start/server/BundlerDevServer.js +16 -2
  107. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  108. package/build/src/start/server/DevServerManager.js +33 -2
  109. package/build/src/start/server/DevServerManager.js.map +1 -1
  110. package/build/src/start/server/getStaticRenderFunctions.js +167 -0
  111. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -0
  112. package/build/src/start/server/metro/MetroBundlerDevServer.js +262 -3
  113. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  114. package/build/src/start/server/metro/MetroTerminalReporter.js +2 -34
  115. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  116. package/build/src/start/server/metro/externals.js +72 -0
  117. package/build/src/start/server/metro/externals.js.map +1 -0
  118. package/build/src/start/server/metro/getCssModulesFromBundler.js +77 -0
  119. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -0
  120. package/build/src/start/server/metro/inspector-proxy/index.js +2 -2
  121. package/build/src/start/server/metro/inspector-proxy/index.js.map +1 -1
  122. package/build/src/start/server/metro/inspector-proxy/proxy.js +1 -3
  123. package/build/src/start/server/metro/inspector-proxy/proxy.js.map +1 -1
  124. package/build/src/start/server/metro/instantiateMetro.js +47 -48
  125. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  126. package/build/src/start/server/metro/metroErrorInterface.js +137 -0
  127. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -0
  128. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +51 -0
  129. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -0
  130. package/build/src/start/server/metro/resolveFromProject.js +26 -3
  131. package/build/src/start/server/metro/resolveFromProject.js.map +1 -1
  132. package/build/src/start/server/metro/router.js +15 -2
  133. package/build/src/start/server/metro/router.js.map +1 -1
  134. package/build/src/start/server/metro/runServer-fork.js +107 -0
  135. package/build/src/start/server/metro/runServer-fork.js.map +1 -0
  136. package/build/src/start/server/metro/symbolicate.js +6 -0
  137. package/build/src/start/server/metro/symbolicate.js.map +1 -0
  138. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +70 -0
  139. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -0
  140. package/build/src/start/server/metro/withMetroMultiPlatform.js +188 -45
  141. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  142. package/build/src/start/server/middleware/ClassicManifestMiddleware.js +8 -1
  143. package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +1 -1
  144. package/build/src/start/server/middleware/CreateFileMiddleware.js +6 -3
  145. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  146. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +113 -47
  147. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  148. package/build/src/start/server/middleware/ManifestMiddleware.js +59 -20
  149. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  150. package/build/src/start/server/type-generation/expo-env.js +27 -0
  151. package/build/src/start/server/type-generation/expo-env.js.map +1 -0
  152. package/build/src/start/server/type-generation/index.js +57 -0
  153. package/build/src/start/server/type-generation/index.js.map +1 -0
  154. package/build/src/start/server/type-generation/routes.js +291 -0
  155. package/build/src/start/server/type-generation/routes.js.map +1 -0
  156. package/build/src/start/server/type-generation/tsconfig.js +89 -0
  157. package/build/src/start/server/type-generation/tsconfig.js.map +1 -0
  158. package/build/src/start/server/webTemplate.js +20 -4
  159. package/build/src/start/server/webTemplate.js.map +1 -1
  160. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +4 -6
  161. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  162. package/build/src/start/startAsync.js +30 -8
  163. package/build/src/start/startAsync.js.map +1 -1
  164. package/build/src/utils/FileNotifier.js +11 -4
  165. package/build/src/utils/FileNotifier.js.map +1 -1
  166. package/build/src/utils/analytics/getMetroProperties.js +1 -1
  167. package/build/src/utils/analytics/getMetroProperties.js.map +1 -1
  168. package/build/src/utils/analytics/rudderstackClient.js +2 -2
  169. package/build/src/utils/codesigning.js +31 -7
  170. package/build/src/utils/codesigning.js.map +1 -1
  171. package/build/src/utils/dir.js +16 -6
  172. package/build/src/utils/dir.js.map +1 -1
  173. package/build/src/utils/env.js +6 -0
  174. package/build/src/utils/env.js.map +1 -1
  175. package/build/src/utils/mergeGitIgnorePaths.js +42 -0
  176. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  177. package/build/src/utils/nodeEnv.js +11 -0
  178. package/build/src/utils/nodeEnv.js.map +1 -0
  179. package/build/src/utils/resolveArgs.js +43 -0
  180. package/build/src/utils/resolveArgs.js.map +1 -1
  181. package/build/src/utils/strings.js +24 -0
  182. package/build/src/utils/strings.js.map +1 -0
  183. package/build/src/utils/template.js +21 -0
  184. package/build/src/utils/template.js.map +1 -0
  185. package/build/src/utils/tsconfig/evaluateTsConfig.js +61 -0
  186. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -0
  187. package/build/src/utils/tsconfig/loadTsConfigPaths.js +69 -0
  188. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -0
  189. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +88 -0
  190. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -0
  191. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +41 -0
  192. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -0
  193. package/package.json +16 -10
  194. package/static/template/metro.config.js +4 -1
  195. package/build/src/api/getProject.js +0 -19
  196. package/build/src/api/getProject.js.map +0 -1
  197. package/build/src/api/graphql/generated.js +0 -113
  198. package/build/src/api/graphql/generated.js.map +0 -1
  199. package/build/src/prebuild/writeMetroConfig.js +0 -89
  200. package/build/src/prebuild/writeMetroConfig.js.map +0 -1
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.unstable_exportStaticAsync = unstable_exportStaticAsync;
6
+ exports.getFilesToExportFromServerAsync = getFilesToExportFromServerAsync;
7
+ exports.exportFromServerAsync = exportFromServerAsync;
8
+ exports.getHtmlFiles = getHtmlFiles;
9
+ exports.getPathVariations = getPathVariations;
10
+ var _assert = _interopRequireDefault(require("assert"));
11
+ var _chalk = _interopRequireDefault(require("chalk"));
12
+ var _fs = _interopRequireDefault(require("fs"));
13
+ var _path = _interopRequireDefault(require("path"));
14
+ var _prettyBytes = _interopRequireDefault(require("pretty-bytes"));
15
+ var _util = require("util");
16
+ var _log = require("../log");
17
+ var _devServerManager = require("../start/server/DevServerManager");
18
+ var _metroBundlerDevServer = require("../start/server/metro/MetroBundlerDevServer");
19
+ var _metroErrorInterface = require("../start/server/metro/metroErrorInterface");
20
+ function _interopRequireDefault(obj) {
21
+ return obj && obj.__esModule ? obj : {
22
+ default: obj
23
+ };
24
+ }
25
+ const debug = require("debug")("expo:export:generateStaticRoutes");
26
+ async function unstable_exportStaticAsync(projectRoot, options) {
27
+ // NOTE(EvanBacon): Please don't use this feature.
28
+ _log.Log.warn("Static exporting with Metro is an experimental feature.");
29
+ const devServerManager = new _devServerManager.DevServerManager(projectRoot, {
30
+ minify: options.minify,
31
+ mode: "production",
32
+ location: {}
33
+ });
34
+ await devServerManager.startAsync([
35
+ {
36
+ type: "metro"
37
+ },
38
+ ]);
39
+ await exportFromServerAsync(projectRoot, devServerManager, options);
40
+ await devServerManager.stopAsync();
41
+ }
42
+ /** Match `(page)` -> `page` */ function matchGroupName(name) {
43
+ var ref;
44
+ return (ref = name.match(/^\(([^/]+?)\)$/)) == null ? void 0 : ref[1];
45
+ }
46
+ async function getFilesToExportFromServerAsync(projectRoot, { manifest , renderAsync }) {
47
+ // name : contents
48
+ const files = new Map();
49
+ await Promise.all(getHtmlFiles({
50
+ manifest
51
+ }).map(async (outputPath)=>{
52
+ const pathname = outputPath.replace(/(index)?\.html$/, "");
53
+ try {
54
+ files.set(outputPath, "");
55
+ const data = await renderAsync(pathname);
56
+ files.set(outputPath, data);
57
+ } catch (e) {
58
+ await (0, _metroErrorInterface).logMetroErrorAsync({
59
+ error: e,
60
+ projectRoot
61
+ });
62
+ throw new Error("Failed to statically export route: " + pathname);
63
+ }
64
+ }));
65
+ return files;
66
+ }
67
+ async function exportFromServerAsync(projectRoot, devServerManager, { outputDir , minify }) {
68
+ const devServer = devServerManager.getDefaultDevServer();
69
+ (0, _assert).default(devServer instanceof _metroBundlerDevServer.MetroBundlerDevServer);
70
+ const [manifest, resources, renderAsync] = await Promise.all([
71
+ devServer.getRoutesAsync(),
72
+ devServer.getStaticResourcesAsync({
73
+ mode: "production",
74
+ minify
75
+ }),
76
+ devServer.getStaticRenderFunctionAsync({
77
+ mode: "production",
78
+ minify
79
+ }),
80
+ ]);
81
+ debug("Routes:\n", (0, _util).inspect(manifest, {
82
+ colors: true,
83
+ depth: null
84
+ }));
85
+ const files = await getFilesToExportFromServerAsync(projectRoot, {
86
+ manifest,
87
+ async renderAsync (pathname) {
88
+ const template = await renderAsync(pathname);
89
+ return devServer.composeResourcesWithHtml({
90
+ mode: "production",
91
+ resources,
92
+ template
93
+ });
94
+ }
95
+ });
96
+ resources.forEach((resource)=>{
97
+ files.set(resource.filename, resource.source);
98
+ });
99
+ _fs.default.mkdirSync(_path.default.join(outputDir), {
100
+ recursive: true
101
+ });
102
+ _log.Log.log("");
103
+ _log.Log.log(_chalk.default.bold`Exporting ${files.size} files:`);
104
+ await Promise.all([
105
+ ...files.entries()
106
+ ].sort(([a], [b])=>a.localeCompare(b)
107
+ ).map(async ([file, contents])=>{
108
+ const length = Buffer.byteLength(contents, "utf8");
109
+ _log.Log.log(file, _chalk.default.gray`(${(0, _prettyBytes).default(length)})`);
110
+ const outputPath = _path.default.join(outputDir, file);
111
+ await _fs.default.promises.mkdir(_path.default.dirname(outputPath), {
112
+ recursive: true
113
+ });
114
+ await _fs.default.promises.writeFile(outputPath, contents);
115
+ }));
116
+ _log.Log.log("");
117
+ }
118
+ function getHtmlFiles({ manifest }) {
119
+ const htmlFiles = new Set();
120
+ function traverseScreens(screens, basePath = "") {
121
+ for (const value of Object.values(screens)){
122
+ if (typeof value === "string") {
123
+ let filePath = basePath + value;
124
+ if (value === "") {
125
+ filePath = basePath === "" ? "index" : basePath.endsWith("/") ? basePath + "index" : basePath.slice(0, -1);
126
+ }
127
+ // TODO: Dedupe requests for alias routes.
128
+ addOptionalGroups(filePath);
129
+ } else if (typeof value === "object" && (value == null ? void 0 : value.screens)) {
130
+ const newPath = basePath + value.path + "/";
131
+ traverseScreens(value.screens, newPath);
132
+ }
133
+ }
134
+ }
135
+ function addOptionalGroups(path) {
136
+ const variations = getPathVariations(path);
137
+ for (const variation of variations){
138
+ htmlFiles.add(variation);
139
+ }
140
+ }
141
+ traverseScreens(manifest.screens);
142
+ return Array.from(htmlFiles).map((value)=>{
143
+ const parts = value.split("/");
144
+ // Replace `:foo` with `[foo]` and `*foo` with `[...foo]`
145
+ const partsWithGroups = parts.map((part)=>{
146
+ if (part.startsWith(":")) {
147
+ return `[${part.slice(1)}]`;
148
+ } else if (part.startsWith("*")) {
149
+ return `[...${part.slice(1)}]`;
150
+ }
151
+ return part;
152
+ });
153
+ return partsWithGroups.join("/") + ".html";
154
+ });
155
+ }
156
+ function getPathVariations(routePath) {
157
+ const variations = new Set([
158
+ routePath
159
+ ]);
160
+ const segments1 = routePath.split("/");
161
+ function generateVariations(segments, index) {
162
+ if (index >= segments.length) {
163
+ return;
164
+ }
165
+ const newSegments = [
166
+ ...segments
167
+ ];
168
+ while(index < newSegments.length && matchGroupName(newSegments[index]) && newSegments.length > 1){
169
+ newSegments.splice(index, 1);
170
+ variations.add(newSegments.join("/"));
171
+ generateVariations(newSegments, index + 1);
172
+ }
173
+ generateVariations(segments, index + 1);
174
+ }
175
+ generateVariations(segments1, 0);
176
+ return Array.from(variations);
177
+ }
178
+
179
+ //# sourceMappingURL=exportStaticAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/export/exportStaticAsync.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport assert from 'assert';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\nimport prettyBytes from 'pretty-bytes';\nimport { inspect } from 'util';\n\nimport { Log } from '../log';\nimport { DevServerManager } from '../start/server/DevServerManager';\nimport { MetroBundlerDevServer } from '../start/server/metro/MetroBundlerDevServer';\nimport { logMetroErrorAsync } from '../start/server/metro/metroErrorInterface';\n\nconst debug = require('debug')('expo:export:generateStaticRoutes') as typeof console.log;\n\ntype Options = { outputDir: string; minify: boolean };\n\n/** @private */\nexport async function unstable_exportStaticAsync(projectRoot: string, options: Options) {\n // NOTE(EvanBacon): Please don't use this feature.\n Log.warn('Static exporting with Metro is an experimental feature.');\n\n const devServerManager = new DevServerManager(projectRoot, {\n minify: options.minify,\n mode: 'production',\n location: {},\n });\n\n await devServerManager.startAsync([\n {\n type: 'metro',\n },\n ]);\n\n await exportFromServerAsync(projectRoot, devServerManager, options);\n\n await devServerManager.stopAsync();\n}\n\n/** Match `(page)` -> `page` */\nfunction matchGroupName(name: string): string | undefined {\n return name.match(/^\\(([^/]+?)\\)$/)?.[1];\n}\n\nexport async function getFilesToExportFromServerAsync(\n projectRoot: string,\n {\n manifest,\n renderAsync,\n }: {\n manifest: any;\n renderAsync: (pathname: string) => Promise<string>;\n }\n): Promise<Map<string, string>> {\n // name : contents\n const files = new Map<string, string>();\n\n await Promise.all(\n getHtmlFiles({ manifest }).map(async (outputPath) => {\n const pathname = outputPath.replace(/(index)?\\.html$/, '');\n try {\n files.set(outputPath, '');\n const data = await renderAsync(pathname);\n files.set(outputPath, data);\n } catch (e: any) {\n await logMetroErrorAsync({ error: e, projectRoot });\n throw new Error('Failed to statically export route: ' + pathname);\n }\n })\n );\n\n return files;\n}\n\n/** Perform all fs commits */\nexport async function exportFromServerAsync(\n projectRoot: string,\n devServerManager: DevServerManager,\n { outputDir, minify }: Options\n): Promise<void> {\n const devServer = devServerManager.getDefaultDevServer();\n assert(devServer instanceof MetroBundlerDevServer);\n\n const [manifest, resources, renderAsync] = await Promise.all([\n devServer.getRoutesAsync(),\n devServer.getStaticResourcesAsync({ mode: 'production', minify }),\n devServer.getStaticRenderFunctionAsync({\n mode: 'production',\n minify,\n }),\n ]);\n\n debug('Routes:\\n', inspect(manifest, { colors: true, depth: null }));\n\n const files = await getFilesToExportFromServerAsync(projectRoot, {\n manifest,\n async renderAsync(pathname: string) {\n const template = await renderAsync(pathname);\n return devServer.composeResourcesWithHtml({\n mode: 'production',\n resources,\n template,\n });\n },\n });\n\n resources.forEach((resource) => {\n files.set(resource.filename, resource.source);\n });\n\n fs.mkdirSync(path.join(outputDir), { recursive: true });\n\n Log.log('');\n Log.log(chalk.bold`Exporting ${files.size} files:`);\n await Promise.all(\n [...files.entries()]\n .sort(([a], [b]) => a.localeCompare(b))\n .map(async ([file, contents]) => {\n const length = Buffer.byteLength(contents, 'utf8');\n Log.log(file, chalk.gray`(${prettyBytes(length)})`);\n const outputPath = path.join(outputDir, file);\n await fs.promises.mkdir(path.dirname(outputPath), { recursive: true });\n await fs.promises.writeFile(outputPath, contents);\n })\n );\n Log.log('');\n}\n\nexport function getHtmlFiles({ manifest }: { manifest: any }): string[] {\n const htmlFiles = new Set<string>();\n\n function traverseScreens(screens: string | { screens: any; path: string }, basePath = '') {\n for (const value of Object.values(screens)) {\n if (typeof value === 'string') {\n let filePath = basePath + value;\n if (value === '') {\n filePath =\n basePath === ''\n ? 'index'\n : basePath.endsWith('/')\n ? basePath + 'index'\n : basePath.slice(0, -1);\n }\n // TODO: Dedupe requests for alias routes.\n addOptionalGroups(filePath);\n } else if (typeof value === 'object' && value?.screens) {\n const newPath = basePath + value.path + '/';\n traverseScreens(value.screens, newPath);\n }\n }\n }\n\n function addOptionalGroups(path: string) {\n const variations = getPathVariations(path);\n for (const variation of variations) {\n htmlFiles.add(variation);\n }\n }\n\n traverseScreens(manifest.screens);\n\n return Array.from(htmlFiles).map((value) => {\n const parts = value.split('/');\n // Replace `:foo` with `[foo]` and `*foo` with `[...foo]`\n const partsWithGroups = parts.map((part) => {\n if (part.startsWith(':')) {\n return `[${part.slice(1)}]`;\n } else if (part.startsWith('*')) {\n return `[...${part.slice(1)}]`;\n }\n return part;\n });\n return partsWithGroups.join('/') + '.html';\n });\n}\n\n// Given a route like `(foo)/bar/(baz)`, return all possible variations of the route.\n// e.g. `(foo)/bar/(baz)`, `(foo)/bar/baz`, `foo/bar/(baz)`, `foo/bar/baz`,\nexport function getPathVariations(routePath: string): string[] {\n const variations = new Set<string>([routePath]);\n const segments = routePath.split('/');\n\n function generateVariations(segments: string[], index: number): void {\n if (index >= segments.length) {\n return;\n }\n\n const newSegments = [...segments];\n while (\n index < newSegments.length &&\n matchGroupName(newSegments[index]) &&\n newSegments.length > 1\n ) {\n newSegments.splice(index, 1);\n variations.add(newSegments.join('/'));\n generateVariations(newSegments, index + 1);\n }\n\n generateVariations(segments, index + 1);\n }\n\n generateVariations(segments, 0);\n\n return Array.from(variations);\n}\n"],"names":["unstable_exportStaticAsync","getFilesToExportFromServerAsync","exportFromServerAsync","getHtmlFiles","getPathVariations","debug","require","projectRoot","options","Log","warn","devServerManager","DevServerManager","minify","mode","location","startAsync","type","stopAsync","matchGroupName","name","match","manifest","renderAsync","files","Map","Promise","all","map","outputPath","pathname","replace","set","data","e","logMetroErrorAsync","error","Error","outputDir","devServer","getDefaultDevServer","assert","MetroBundlerDevServer","resources","getRoutesAsync","getStaticResourcesAsync","getStaticRenderFunctionAsync","inspect","colors","depth","template","composeResourcesWithHtml","forEach","resource","filename","source","fs","mkdirSync","path","join","recursive","log","chalk","bold","size","entries","sort","a","b","localeCompare","file","contents","length","Buffer","byteLength","gray","prettyBytes","promises","mkdir","dirname","writeFile","htmlFiles","Set","traverseScreens","screens","basePath","value","Object","values","filePath","endsWith","slice","addOptionalGroups","newPath","variations","variation","add","Array","from","parts","split","partsWithGroups","part","startsWith","routePath","segments","generateVariations","index","newSegments","splice"],"mappings":"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"}
@@ -7,29 +7,13 @@ var _config = require("@expo/config");
7
7
  var _hermesBundler = require("@expo/dev-server/build/HermesBundler");
8
8
  var _importMetroFromProject = require("@expo/dev-server/build/metro/importMetroFromProject");
9
9
  var _chalk = _interopRequireDefault(require("chalk"));
10
- var _metroCore = require("metro-core");
11
- var _metroTerminalReporter = require("../start/server/metro/MetroTerminalReporter");
12
- var _withMetroMultiPlatform = require("../start/server/metro/withMetroMultiPlatform");
13
- var _platformBundlers = require("../start/server/platformBundlers");
14
- var _getMetroProperties = require("../utils/analytics/getMetroProperties");
15
- var _rudderstackClient = require("../utils/analytics/rudderstackClient");
10
+ var _getCssModulesFromBundler = require("../start/server/metro/getCssModulesFromBundler");
11
+ var _instantiateMetro = require("../start/server/metro/instantiateMetro");
16
12
  function _interopRequireDefault(obj) {
17
13
  return obj && obj.__esModule ? obj : {
18
14
  default: obj
19
15
  };
20
16
  }
21
- function getExpoMetroConfig(projectRoot, { logger }) {
22
- try {
23
- return (0, _importMetroFromProject).importExpoMetroConfigFromProject(projectRoot);
24
- } catch {
25
- // If expo isn't installed, use the unversioned config and warn about installing expo.
26
- }
27
- const unversionedVersion = require("@expo/metro-config/package.json").version;
28
- logger.info({
29
- tag: "expo"
30
- }, _chalk.default.gray(`\u203A Unversioned ${_chalk.default.bold`@expo/metro-config@${unversionedVersion}`} is being used. Bundling apps may not work as expected, and is subject to breaking changes. Install ${_chalk.default.bold`expo`} or set the app.json sdkVersion to use a stable version of @expo/metro-config.`));
31
- return require("@expo/metro-config");
32
- }
33
17
  let nextBuildID = 0;
34
18
  // Fork of @expo/dev-server bundleAsync to add Metro logging back.
35
19
  async function assertEngineMismatchAsync(projectRoot, exp, platform) {
@@ -46,24 +30,9 @@ async function bundleAsync(projectRoot, expoConfig, options, bundles) {
46
30
  ));
47
31
  const metro = (0, _importMetroFromProject).importMetroFromProject(projectRoot);
48
32
  const Server = (0, _importMetroFromProject).importMetroServerFromProject(projectRoot);
49
- const terminal = new _metroCore.Terminal(process.stdout);
50
- const terminalReporter = new _metroTerminalReporter.MetroTerminalReporter(projectRoot, terminal);
51
- const reporter = {
52
- update (event) {
53
- terminalReporter.update(event);
54
- }
55
- };
56
- const ExpoMetroConfig = getExpoMetroConfig(projectRoot, options);
57
- const { exp } = (0, _config).getConfig(projectRoot, {
58
- skipSDKVersionRequirement: true
59
- });
60
- let config = await ExpoMetroConfig.loadAsync(projectRoot, {
61
- reporter,
62
- ...options
33
+ const { config , reporter } = await (0, _instantiateMetro).loadMetroConfigAsync(projectRoot, options, {
34
+ exp: expoConfig
63
35
  });
64
- const bundlerPlatforms = (0, _platformBundlers).getPlatformBundlers(exp);
65
- config = await (0, _withMetroMultiPlatform).withMetroMultiPlatformAsync(projectRoot, config, bundlerPlatforms);
66
- (0, _rudderstackClient).logEventAsync("metro config", (0, _getMetroProperties).getMetroProperties(projectRoot, exp, config));
67
36
  const metroServer = await metro.runMetro(config, {
68
37
  watch: false
69
38
  });
@@ -83,7 +52,7 @@ async function bundleAsync(projectRoot, expoConfig, options, bundles) {
83
52
  createModuleIdFactory: config.serializer.createModuleIdFactory,
84
53
  onProgress: (transformedFileCount, totalFileCount)=>{
85
54
  if (!options.quiet) {
86
- terminalReporter.update({
55
+ reporter.update({
87
56
  buildID,
88
57
  type: "bundle_transform_progressed",
89
58
  transformedFileCount,
@@ -96,26 +65,29 @@ async function bundleAsync(projectRoot, expoConfig, options, bundles) {
96
65
  ...bundleOptions,
97
66
  buildID
98
67
  };
99
- terminalReporter.update({
68
+ reporter.update({
100
69
  buildID,
101
70
  type: "bundle_build_started",
102
- // @ts-expect-error: TODO
103
71
  bundleDetails
104
72
  });
105
73
  try {
106
74
  const { code , map } = await metroServer.build(bundleOptions);
107
- const assets = await metroServer.getAssets(bundleOptions);
108
- terminalReporter.update({
75
+ const [assets, css] = await Promise.all([
76
+ metroServer.getAssets(bundleOptions),
77
+ (0, _getCssModulesFromBundler).getCssModulesFromBundler(config, metroServer.getBundler(), bundleOptions),
78
+ ]);
79
+ reporter.update({
109
80
  buildID,
110
81
  type: "bundle_build_done"
111
82
  });
112
83
  return {
113
84
  code,
114
85
  map,
115
- assets
86
+ assets: assets,
87
+ css
116
88
  };
117
89
  } catch (error) {
118
- terminalReporter.update({
90
+ reporter.update({
119
91
  buildID,
120
92
  type: "bundle_build_failed"
121
93
  });
@@ -131,7 +103,7 @@ async function bundleAsync(projectRoot, expoConfig, options, bundles) {
131
103
  android: "Android",
132
104
  web: "Web"
133
105
  }[platform] || platform);
134
- terminalReporter.terminal.log(`${platformTag} Building Hermes bytecode for the bundle`);
106
+ reporter.terminal.log(`${platformTag} Building Hermes bytecode for the bundle`);
135
107
  var _minify;
136
108
  const hermesBundleOutput = await (0, _hermesBundler).buildHermesBundleAsync(projectRoot, bundleOutput.code, bundleOutput.map, (_minify = bundle.minify) != null ? _minify : !bundle.dev);
137
109
  bundleOutput.hermesBytecodeBundle = hermesBundleOutput.hbc;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/fork-bundleAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfig, getConfigFilePaths, Platform } from '@expo/config';\nimport {\n buildHermesBundleAsync,\n isEnableHermesManaged,\n maybeThrowFromInconsistentEngineAsync,\n} from '@expo/dev-server/build/HermesBundler';\nimport {\n importExpoMetroConfigFromProject,\n importMetroFromProject,\n importMetroServerFromProject,\n} from '@expo/dev-server/build/metro/importMetroFromProject';\nimport { LoadOptions } from '@expo/metro-config';\nimport chalk from 'chalk';\nimport Metro from 'metro';\nimport { Terminal } from 'metro-core';\n\nimport { MetroTerminalReporter } from '../start/server/metro/MetroTerminalReporter';\nimport { withMetroMultiPlatformAsync } from '../start/server/metro/withMetroMultiPlatform';\nimport { getPlatformBundlers } from '../start/server/platformBundlers';\nimport { getMetroProperties } from '../utils/analytics/getMetroProperties';\nimport { logEventAsync } from '../utils/analytics/rudderstackClient';\n\nexport type MetroDevServerOptions = LoadOptions & {\n logger: import('@expo/bunyan');\n quiet?: boolean;\n};\nexport type BundleOptions = {\n entryPoint: string;\n platform: 'android' | 'ios' | 'web';\n dev?: boolean;\n minify?: boolean;\n sourceMapUrl?: string;\n};\nexport type BundleAssetWithFileHashes = Metro.AssetData & {\n fileHashes: string[]; // added by the hashAssets asset plugin\n};\nexport type BundleOutput = {\n code: string;\n map?: string;\n hermesBytecodeBundle?: Uint8Array;\n hermesSourcemap?: string;\n assets: readonly BundleAssetWithFileHashes[];\n};\n\nfunction getExpoMetroConfig(\n projectRoot: string,\n { logger }: Pick<MetroDevServerOptions, 'logger'>\n): typeof import('@expo/metro-config') {\n try {\n return importExpoMetroConfigFromProject(projectRoot);\n } catch {\n // If expo isn't installed, use the unversioned config and warn about installing expo.\n }\n\n const unversionedVersion = require('@expo/metro-config/package.json').version;\n logger.info(\n { tag: 'expo' },\n chalk.gray(\n `\\u203A Unversioned ${chalk.bold`@expo/metro-config@${unversionedVersion}`} is being used. Bundling apps may not work as expected, and is subject to breaking changes. Install ${chalk.bold`expo`} or set the app.json sdkVersion to use a stable version of @expo/metro-config.`\n )\n );\n\n return require('@expo/metro-config');\n}\n\nlet nextBuildID = 0;\n\n// Fork of @expo/dev-server bundleAsync to add Metro logging back.\n\nasync function assertEngineMismatchAsync(projectRoot: string, exp: ExpoConfig, platform: Platform) {\n const isHermesManaged = isEnableHermesManaged(exp, platform);\n\n const paths = getConfigFilePaths(projectRoot);\n const configFilePath = paths.dynamicConfigPath ?? paths.staticConfigPath ?? 'app.json';\n await maybeThrowFromInconsistentEngineAsync(\n projectRoot,\n configFilePath,\n platform,\n isHermesManaged\n );\n}\n\nexport async function bundleAsync(\n projectRoot: string,\n expoConfig: ExpoConfig,\n options: MetroDevServerOptions,\n bundles: BundleOptions[]\n): Promise<BundleOutput[]> {\n // Assert early so the user doesn't have to wait until bundling is complete to find out that\n // Hermes won't be available.\n await Promise.all(\n bundles.map(({ platform }) => assertEngineMismatchAsync(projectRoot, expoConfig, platform))\n );\n\n const metro = importMetroFromProject(projectRoot);\n const Server = importMetroServerFromProject(projectRoot);\n\n const terminal = new Terminal(process.stdout);\n const terminalReporter = new MetroTerminalReporter(projectRoot, terminal);\n\n const reporter = {\n update(event: any) {\n terminalReporter.update(event);\n },\n };\n\n const ExpoMetroConfig = getExpoMetroConfig(projectRoot, options);\n\n const { exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n let config = await ExpoMetroConfig.loadAsync(projectRoot, { reporter, ...options });\n\n const bundlerPlatforms = getPlatformBundlers(exp);\n\n config = await withMetroMultiPlatformAsync(projectRoot, config, bundlerPlatforms);\n\n logEventAsync('metro config', getMetroProperties(projectRoot, exp, config));\n\n const metroServer = await metro.runMetro(config, {\n watch: false,\n });\n\n const buildAsync = async (bundle: BundleOptions): Promise<BundleOutput> => {\n const buildID = `bundle_${nextBuildID++}_${bundle.platform}`;\n const isHermes = isEnableHermesManaged(expoConfig, bundle.platform);\n const bundleOptions: Metro.BundleOptions = {\n ...Server.DEFAULT_BUNDLE_OPTIONS,\n bundleType: 'bundle',\n platform: bundle.platform,\n entryFile: bundle.entryPoint,\n dev: bundle.dev ?? false,\n minify: !isHermes && (bundle.minify ?? !bundle.dev),\n inlineSourceMap: false,\n sourceMapUrl: bundle.sourceMapUrl,\n createModuleIdFactory: config.serializer.createModuleIdFactory,\n onProgress: (transformedFileCount: number, totalFileCount: number) => {\n if (!options.quiet) {\n terminalReporter.update({\n buildID,\n type: 'bundle_transform_progressed',\n transformedFileCount,\n totalFileCount,\n });\n }\n },\n };\n const bundleDetails = {\n ...bundleOptions,\n buildID,\n };\n terminalReporter.update({\n buildID,\n type: 'bundle_build_started',\n // @ts-expect-error: TODO\n bundleDetails,\n });\n try {\n const { code, map } = await metroServer.build(bundleOptions);\n const assets = (await metroServer.getAssets(\n bundleOptions\n )) as readonly BundleAssetWithFileHashes[];\n terminalReporter.update({\n buildID,\n type: 'bundle_build_done',\n });\n return { code, map, assets };\n } catch (error) {\n terminalReporter.update({\n buildID,\n type: 'bundle_build_failed',\n });\n\n throw error;\n }\n };\n\n const maybeAddHermesBundleAsync = async (\n bundle: BundleOptions,\n bundleOutput: BundleOutput\n ): Promise<BundleOutput> => {\n const { platform } = bundle;\n const isHermesManaged = isEnableHermesManaged(expoConfig, platform);\n if (isHermesManaged) {\n const platformTag = chalk.bold(\n { ios: 'iOS', android: 'Android', web: 'Web' }[platform] || platform\n );\n\n terminalReporter.terminal.log(`${platformTag} Building Hermes bytecode for the bundle`);\n\n const hermesBundleOutput = await buildHermesBundleAsync(\n projectRoot,\n bundleOutput.code,\n bundleOutput.map!,\n bundle.minify ?? !bundle.dev\n );\n bundleOutput.hermesBytecodeBundle = hermesBundleOutput.hbc;\n bundleOutput.hermesSourcemap = hermesBundleOutput.sourcemap;\n }\n return bundleOutput;\n };\n\n try {\n const intermediateOutputs = await Promise.all(bundles.map((bundle) => buildAsync(bundle)));\n const bundleOutputs: BundleOutput[] = [];\n for (let i = 0; i < bundles.length; ++i) {\n // hermesc does not support parallel building even we spawn processes.\n // we should build them sequentially.\n bundleOutputs.push(await maybeAddHermesBundleAsync(bundles[i], intermediateOutputs[i]));\n }\n return bundleOutputs;\n } catch (error) {\n // New line so errors don't show up inline with the progress bar\n console.log('');\n throw error;\n } finally {\n metroServer.end();\n }\n}\n"],"names":["bundleAsync","getExpoMetroConfig","projectRoot","logger","importExpoMetroConfigFromProject","unversionedVersion","require","version","info","tag","chalk","gray","bold","nextBuildID","assertEngineMismatchAsync","exp","platform","isHermesManaged","isEnableHermesManaged","paths","getConfigFilePaths","configFilePath","dynamicConfigPath","staticConfigPath","maybeThrowFromInconsistentEngineAsync","expoConfig","options","bundles","Promise","all","map","metro","importMetroFromProject","Server","importMetroServerFromProject","terminal","Terminal","process","stdout","terminalReporter","MetroTerminalReporter","reporter","update","event","ExpoMetroConfig","getConfig","skipSDKVersionRequirement","config","loadAsync","bundlerPlatforms","getPlatformBundlers","withMetroMultiPlatformAsync","logEventAsync","getMetroProperties","metroServer","runMetro","watch","buildAsync","bundle","buildID","isHermes","bundleOptions","DEFAULT_BUNDLE_OPTIONS","bundleType","entryFile","entryPoint","dev","minify","inlineSourceMap","sourceMapUrl","createModuleIdFactory","serializer","onProgress","transformedFileCount","totalFileCount","quiet","type","bundleDetails","code","build","assets","getAssets","error","maybeAddHermesBundleAsync","bundleOutput","platformTag","ios","android","web","log","hermesBundleOutput","buildHermesBundleAsync","hermesBytecodeBundle","hbc","hermesSourcemap","sourcemap","intermediateOutputs","bundleOutputs","i","length","push","console","end"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/export/fork-bundleAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfigFilePaths, Platform } from '@expo/config';\nimport {\n buildHermesBundleAsync,\n isEnableHermesManaged,\n maybeThrowFromInconsistentEngineAsync,\n} from '@expo/dev-server/build/HermesBundler';\nimport {\n importMetroFromProject,\n importMetroServerFromProject,\n} from '@expo/dev-server/build/metro/importMetroFromProject';\nimport type { LoadOptions } from '@expo/metro-config';\nimport chalk from 'chalk';\nimport Metro from 'metro';\nimport type { BundleOptions as MetroBundleOptions } from 'metro/src/shared/types';\n\nimport { CSSAsset, getCssModulesFromBundler } from '../start/server/metro/getCssModulesFromBundler';\nimport { loadMetroConfigAsync } from '../start/server/metro/instantiateMetro';\n\nexport type MetroDevServerOptions = LoadOptions & {\n logger: import('@expo/bunyan');\n quiet?: boolean;\n};\nexport type BundleOptions = {\n entryPoint: string;\n platform: 'android' | 'ios' | 'web';\n dev?: boolean;\n minify?: boolean;\n sourceMapUrl?: string;\n};\nexport type BundleAssetWithFileHashes = Metro.AssetData & {\n fileHashes: string[]; // added by the hashAssets asset plugin\n};\nexport type BundleOutput = {\n code: string;\n map?: string;\n hermesBytecodeBundle?: Uint8Array;\n hermesSourcemap?: string;\n css: CSSAsset[];\n assets: readonly BundleAssetWithFileHashes[];\n};\n\nlet nextBuildID = 0;\n\n// Fork of @expo/dev-server bundleAsync to add Metro logging back.\n\nasync function assertEngineMismatchAsync(projectRoot: string, exp: ExpoConfig, platform: Platform) {\n const isHermesManaged = isEnableHermesManaged(exp, platform);\n\n const paths = getConfigFilePaths(projectRoot);\n const configFilePath = paths.dynamicConfigPath ?? paths.staticConfigPath ?? 'app.json';\n await maybeThrowFromInconsistentEngineAsync(\n projectRoot,\n configFilePath,\n platform,\n isHermesManaged\n );\n}\n\nexport async function bundleAsync(\n projectRoot: string,\n expoConfig: ExpoConfig,\n options: MetroDevServerOptions,\n bundles: BundleOptions[]\n): Promise<BundleOutput[]> {\n // Assert early so the user doesn't have to wait until bundling is complete to find out that\n // Hermes won't be available.\n await Promise.all(\n bundles.map(({ platform }) => assertEngineMismatchAsync(projectRoot, expoConfig, platform))\n );\n\n const metro = importMetroFromProject(projectRoot);\n const Server = importMetroServerFromProject(projectRoot);\n\n const { config, reporter } = await loadMetroConfigAsync(projectRoot, options, {\n exp: expoConfig,\n });\n\n const metroServer = await metro.runMetro(config, {\n watch: false,\n });\n\n const buildAsync = async (bundle: BundleOptions): Promise<BundleOutput> => {\n const buildID = `bundle_${nextBuildID++}_${bundle.platform}`;\n const isHermes = isEnableHermesManaged(expoConfig, bundle.platform);\n const bundleOptions: MetroBundleOptions = {\n ...Server.DEFAULT_BUNDLE_OPTIONS,\n bundleType: 'bundle',\n platform: bundle.platform,\n entryFile: bundle.entryPoint,\n dev: bundle.dev ?? false,\n minify: !isHermes && (bundle.minify ?? !bundle.dev),\n inlineSourceMap: false,\n sourceMapUrl: bundle.sourceMapUrl,\n createModuleIdFactory: config.serializer.createModuleIdFactory,\n onProgress: (transformedFileCount: number, totalFileCount: number) => {\n if (!options.quiet) {\n reporter.update({\n buildID,\n type: 'bundle_transform_progressed',\n transformedFileCount,\n totalFileCount,\n });\n }\n },\n };\n const bundleDetails = {\n ...bundleOptions,\n buildID,\n };\n reporter.update({\n buildID,\n type: 'bundle_build_started',\n bundleDetails,\n });\n try {\n const { code, map } = await metroServer.build(bundleOptions);\n const [assets, css] = await Promise.all([\n metroServer.getAssets(bundleOptions),\n getCssModulesFromBundler(config, metroServer.getBundler(), bundleOptions),\n ]);\n\n reporter.update({\n buildID,\n type: 'bundle_build_done',\n });\n return { code, map, assets: assets as readonly BundleAssetWithFileHashes[], css };\n } catch (error) {\n reporter.update({\n buildID,\n type: 'bundle_build_failed',\n });\n\n throw error;\n }\n };\n\n const maybeAddHermesBundleAsync = async (\n bundle: BundleOptions,\n bundleOutput: BundleOutput\n ): Promise<BundleOutput> => {\n const { platform } = bundle;\n const isHermesManaged = isEnableHermesManaged(expoConfig, platform);\n if (isHermesManaged) {\n const platformTag = chalk.bold(\n { ios: 'iOS', android: 'Android', web: 'Web' }[platform] || platform\n );\n\n reporter.terminal.log(`${platformTag} Building Hermes bytecode for the bundle`);\n\n const hermesBundleOutput = await buildHermesBundleAsync(\n projectRoot,\n bundleOutput.code,\n bundleOutput.map!,\n bundle.minify ?? !bundle.dev\n );\n bundleOutput.hermesBytecodeBundle = hermesBundleOutput.hbc;\n bundleOutput.hermesSourcemap = hermesBundleOutput.sourcemap;\n }\n return bundleOutput;\n };\n\n try {\n const intermediateOutputs = await Promise.all(bundles.map((bundle) => buildAsync(bundle)));\n const bundleOutputs: BundleOutput[] = [];\n for (let i = 0; i < bundles.length; ++i) {\n // hermesc does not support parallel building even we spawn processes.\n // we should build them sequentially.\n bundleOutputs.push(await maybeAddHermesBundleAsync(bundles[i], intermediateOutputs[i]));\n }\n return bundleOutputs;\n } catch (error) {\n // New line so errors don't show up inline with the progress bar\n console.log('');\n throw error;\n } finally {\n metroServer.end();\n }\n}\n"],"names":["bundleAsync","nextBuildID","assertEngineMismatchAsync","projectRoot","exp","platform","isHermesManaged","isEnableHermesManaged","paths","getConfigFilePaths","configFilePath","dynamicConfigPath","staticConfigPath","maybeThrowFromInconsistentEngineAsync","expoConfig","options","bundles","Promise","all","map","metro","importMetroFromProject","Server","importMetroServerFromProject","config","reporter","loadMetroConfigAsync","metroServer","runMetro","watch","buildAsync","bundle","buildID","isHermes","bundleOptions","DEFAULT_BUNDLE_OPTIONS","bundleType","entryFile","entryPoint","dev","minify","inlineSourceMap","sourceMapUrl","createModuleIdFactory","serializer","onProgress","transformedFileCount","totalFileCount","quiet","update","type","bundleDetails","code","build","assets","css","getAssets","getCssModulesFromBundler","getBundler","error","maybeAddHermesBundleAsync","bundleOutput","platformTag","chalk","bold","ios","android","web","terminal","log","hermesBundleOutput","buildHermesBundleAsync","hermesBytecodeBundle","hbc","hermesSourcemap","sourcemap","intermediateOutputs","bundleOutputs","i","length","push","console","end"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.appendLinkToHtml = appendLinkToHtml;
6
+ exports.appendScriptsToHtml = appendScriptsToHtml;
7
+ function appendLinkToHtml(html, links) {
8
+ return html.replace("</head>", links.map((link)=>{
9
+ let linkTag = `<link rel="${link.rel}"`;
10
+ if (link.href) linkTag += ` href="${link.href}"`;
11
+ if (link.as) linkTag += ` as="${link.as}"`;
12
+ linkTag += ">";
13
+ return linkTag;
14
+ }).join("") + "</head>");
15
+ }
16
+ function appendScriptsToHtml(html, scripts) {
17
+ return html.replace("</body>", scripts.map((script)=>`<script src="${script}" defer></script>`
18
+ ).join("") + "</body>");
19
+ }
20
+
21
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/export/html.ts"],"sourcesContent":["// <link rel=\"preload\" href=\"/_expo/static/css/xxxxxx.css\" as=\"style\">\nexport function appendLinkToHtml(\n html: string,\n links: { rel: string; href: string; as?: string }[]\n) {\n return html.replace(\n '</head>',\n links\n .map((link) => {\n let linkTag = `<link rel=\"${link.rel}\"`;\n\n if (link.href) linkTag += ` href=\"${link.href}\"`;\n if (link.as) linkTag += ` as=\"${link.as}\"`;\n\n linkTag += '>';\n\n return linkTag;\n })\n .join('') + '</head>'\n );\n}\n\nexport function appendScriptsToHtml(html: string, scripts: string[]) {\n return html.replace(\n '</body>',\n scripts.map((script) => `<script src=\"${script}\" defer></script>`).join('') + '</body>'\n );\n}\n"],"names":["appendLinkToHtml","appendScriptsToHtml","html","links","replace","map","link","linkTag","rel","href","as","join","scripts","script"],"mappings":"AACA;;;;QAAgBA,gBAAgB,GAAhBA,gBAAgB;QAqBhBC,mBAAmB,GAAnBA,mBAAmB;AArB5B,SAASD,gBAAgB,CAC9BE,IAAY,EACZC,KAAmD,EACnD;IACA,OAAOD,IAAI,CAACE,OAAO,CACjB,SAAS,EACTD,KAAK,CACFE,GAAG,CAAC,CAACC,IAAI,GAAK;QACb,IAAIC,OAAO,GAAG,CAAC,WAAW,EAAED,IAAI,CAACE,GAAG,CAAC,CAAC,CAAC,AAAC;QAExC,IAAIF,IAAI,CAACG,IAAI,EAAEF,OAAO,IAAI,CAAC,OAAO,EAAED,IAAI,CAACG,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,IAAIH,IAAI,CAACI,EAAE,EAAEH,OAAO,IAAI,CAAC,KAAK,EAAED,IAAI,CAACI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3CH,OAAO,IAAI,GAAG,CAAC;QAEf,OAAOA,OAAO,CAAC;KAChB,CAAC,CACDI,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CACxB,CAAC;CACH;AAEM,SAASV,mBAAmB,CAACC,IAAY,EAAEU,OAAiB,EAAE;IACnE,OAAOV,IAAI,CAACE,OAAO,CACjB,SAAS,EACTQ,OAAO,CAACP,GAAG,CAAC,CAACQ,MAAM,GAAK,CAAC,aAAa,EAAEA,MAAM,CAAC,iBAAiB,CAAC;IAAA,CAAC,CAACF,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CACxF,CAAC;CACH"}
@@ -44,6 +44,7 @@ const expoExport = async (argv)=>{
44
44
  "--max-workers": Number,
45
45
  "--output-dir": String,
46
46
  "--platform": String,
47
+ "--no-minify": Boolean,
47
48
  // Hack: This is added because EAS CLI always includes the flag.
48
49
  // If supplied, we'll do nothing with the value, but at least the process won't crash.
49
50
  // Note that we also don't show this value in the `--help` prompt since we don't want people to use it.
@@ -53,7 +54,9 @@ const expoExport = async (argv)=>{
53
54
  // '-s': '--dump-sourcemap',
54
55
  // '-d': '--dump-assetmap',
55
56
  "-c": "--clear",
56
- "-p": "--platform"
57
+ "-p": "--platform",
58
+ // Interop with Metro docs and RedBox errors.
59
+ "--reset-cache": "--clear"
57
60
  }, argv);
58
61
  if (args["--help"]) {
59
62
  (0, _args).printHelp(`Export the static files of the app for hosting it on a web server`, _chalk.default`npx expo export {dim <dir>}`, [
@@ -64,6 +67,7 @@ const expoExport = async (argv)=>{
64
67
  `--dump-assetmap Dump the asset map for further processing`,
65
68
  `--dump-sourcemap Dump the source map for debugging the JS bundle`,
66
69
  _chalk.default`-p, --platform <platform> Options: android, ios, web, all. {dim Default: all}`,
70
+ `--no-minify Prevent minifying source`,
67
71
  `-c, --clear Clear the bundler cache`,
68
72
  `-h, --help Usage info`,
69
73
  ].join("\n"));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertArgs, getProjectRoot, printHelp } from '../utils/args';\nimport { logCmdError } from '../utils/errors';\n\nexport const expoExport: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--clear': Boolean,\n '--dump-assetmap': Boolean,\n '--dev': Boolean,\n '--dump-sourcemap': Boolean,\n '--max-workers': Number,\n '--output-dir': String,\n '--platform': String,\n\n // Hack: This is added because EAS CLI always includes the flag.\n // If supplied, we'll do nothing with the value, but at least the process won't crash.\n // Note that we also don't show this value in the `--help` prompt since we don't want people to use it.\n '--experimental-bundle': Boolean,\n\n // Aliases\n '-h': '--help',\n // '-s': '--dump-sourcemap',\n // '-d': '--dump-assetmap',\n '-c': '--clear',\n '-p': '--platform',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Export the static files of the app for hosting it on a web server`,\n chalk`npx expo export {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--dev Configure static files for developing locally using a non-https server`,\n chalk`--output-dir <dir> The directory to export the static files to. {dim Default: dist}`,\n `--max-workers <number> Maximum number of tasks to allow the bundler to spawn`,\n `--dump-assetmap Dump the asset map for further processing`,\n `--dump-sourcemap Dump the source map for debugging the JS bundle`,\n chalk`-p, --platform <platform> Options: android, ios, web, all. {dim Default: all}`,\n `-c, --clear Clear the bundler cache`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n const projectRoot = getProjectRoot(args);\n const { resolveOptionsAsync } = await import('./resolveOptions');\n const options = await resolveOptionsAsync(projectRoot, args).catch(logCmdError);\n\n const { exportAsync } = await import('./exportAsync');\n return exportAsync(projectRoot, options).catch(logCmdError);\n};\n"],"names":["expoExport","argv","args","assertArgs","Boolean","Number","String","printHelp","chalk","join","projectRoot","getProjectRoot","resolveOptionsAsync","options","catch","logCmdError","exportAsync"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAG6B,IAAA,KAAe,WAAf,eAAe,CAAA;AACzC,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,MAAMA,UAAU,GAAY,OAAOC,IAAI,GAAK;IACjD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AAyBtB,CAAA,WAzBsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,SAAS,EAAEA,OAAO;QAClB,iBAAiB,EAAEA,OAAO;QAC1B,OAAO,EAAEA,OAAO;QAChB,kBAAkB,EAAEA,OAAO;QAC3B,eAAe,EAAEC,MAAM;QACvB,cAAc,EAAEC,MAAM;QACtB,YAAY,EAAEA,MAAM;QAEpB,gEAAgE;QAChE,sFAAsF;QACtF,uGAAuG;QACvG,uBAAuB,EAAEF,OAAO;QAEhC,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,4BAA4B;QAC5B,2BAA2B;QAC3B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,YAAY;KACnB,EACDH,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBK,CAAAA,GAAAA,KAAS,AAcR,CAAA,UAdQ,CACP,CAAC,iEAAiE,CAAC,EACnEC,MAAK,QAAA,CAAC,2BAA2B,CAAC,EAClC;YACEA,MAAK,QAAA,CAAC,kGAAkG,CAAC;YACzG,CAAC,iGAAiG,CAAC;YACnGA,MAAK,QAAA,CAAC,2FAA2F,CAAC;YAClG,CAAC,gFAAgF,CAAC;YAClF,CAAC,oEAAoE,CAAC;YACtE,CAAC,0EAA0E,CAAC;YAC5EA,MAAK,QAAA,CAAC,8EAA8E,CAAC;YACrF,CAAC,kDAAkD,CAAC;YACpD,CAAC,qCAAqC,CAAC;SACxC,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,MAAMC,WAAW,GAAGC,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACT,IAAI,CAAC,AAAC;IACzC,MAAM,EAAEU,mBAAmB,CAAA,EAAE,GAAG,MAAM;+CAAO,kBAAkB;MAAC,AAAC;IACjE,MAAMC,OAAO,GAAG,MAAMD,mBAAmB,CAACF,WAAW,EAAER,IAAI,CAAC,CAACY,KAAK,CAACC,OAAW,YAAA,CAAC,AAAC;IAEhF,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAG,MAAM;+CAAO,eAAe;MAAC,AAAC;IACtD,OAAOA,WAAW,CAACN,WAAW,EAAEG,OAAO,CAAC,CAACC,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;CAC7D,AAAC;QApDWf,UAAU,GAAVA,UAAU"}
1
+ {"version":3,"sources":["../../../src/export/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertArgs, getProjectRoot, printHelp } from '../utils/args';\nimport { logCmdError } from '../utils/errors';\n\nexport const expoExport: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--clear': Boolean,\n '--dump-assetmap': Boolean,\n '--dev': Boolean,\n '--dump-sourcemap': Boolean,\n '--max-workers': Number,\n '--output-dir': String,\n '--platform': String,\n '--no-minify': Boolean,\n\n // Hack: This is added because EAS CLI always includes the flag.\n // If supplied, we'll do nothing with the value, but at least the process won't crash.\n // Note that we also don't show this value in the `--help` prompt since we don't want people to use it.\n '--experimental-bundle': Boolean,\n\n // Aliases\n '-h': '--help',\n // '-s': '--dump-sourcemap',\n // '-d': '--dump-assetmap',\n '-c': '--clear',\n '-p': '--platform',\n // Interop with Metro docs and RedBox errors.\n '--reset-cache': '--clear',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Export the static files of the app for hosting it on a web server`,\n chalk`npx expo export {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--dev Configure static files for developing locally using a non-https server`,\n chalk`--output-dir <dir> The directory to export the static files to. {dim Default: dist}`,\n `--max-workers <number> Maximum number of tasks to allow the bundler to spawn`,\n `--dump-assetmap Dump the asset map for further processing`,\n `--dump-sourcemap Dump the source map for debugging the JS bundle`,\n chalk`-p, --platform <platform> Options: android, ios, web, all. {dim Default: all}`,\n `--no-minify Prevent minifying source`,\n `-c, --clear Clear the bundler cache`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n const projectRoot = getProjectRoot(args);\n const { resolveOptionsAsync } = await import('./resolveOptions');\n const options = await resolveOptionsAsync(projectRoot, args).catch(logCmdError);\n\n const { exportAsync } = await import('./exportAsync');\n return exportAsync(projectRoot, options).catch(logCmdError);\n};\n"],"names":["expoExport","argv","args","assertArgs","Boolean","Number","String","printHelp","chalk","join","projectRoot","getProjectRoot","resolveOptionsAsync","options","catch","logCmdError","exportAsync"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAG6B,IAAA,KAAe,WAAf,eAAe,CAAA;AACzC,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,MAAMA,UAAU,GAAY,OAAOC,IAAI,GAAK;IACjD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AA4BtB,CAAA,WA5BsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,SAAS,EAAEA,OAAO;QAClB,iBAAiB,EAAEA,OAAO;QAC1B,OAAO,EAAEA,OAAO;QAChB,kBAAkB,EAAEA,OAAO;QAC3B,eAAe,EAAEC,MAAM;QACvB,cAAc,EAAEC,MAAM;QACtB,YAAY,EAAEA,MAAM;QACpB,aAAa,EAAEF,OAAO;QAEtB,gEAAgE;QAChE,sFAAsF;QACtF,uGAAuG;QACvG,uBAAuB,EAAEA,OAAO;QAEhC,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,4BAA4B;QAC5B,2BAA2B;QAC3B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,YAAY;QAClB,6CAA6C;QAC7C,eAAe,EAAE,SAAS;KAC3B,EACDH,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBK,CAAAA,GAAAA,KAAS,AAeR,CAAA,UAfQ,CACP,CAAC,iEAAiE,CAAC,EACnEC,MAAK,QAAA,CAAC,2BAA2B,CAAC,EAClC;YACEA,MAAK,QAAA,CAAC,kGAAkG,CAAC;YACzG,CAAC,iGAAiG,CAAC;YACnGA,MAAK,QAAA,CAAC,2FAA2F,CAAC;YAClG,CAAC,gFAAgF,CAAC;YAClF,CAAC,oEAAoE,CAAC;YACtE,CAAC,0EAA0E,CAAC;YAC5EA,MAAK,QAAA,CAAC,8EAA8E,CAAC;YACrF,CAAC,mDAAmD,CAAC;YACrD,CAAC,kDAAkD,CAAC;YACpD,CAAC,qCAAqC,CAAC;SACxC,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,MAAMC,WAAW,GAAGC,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACT,IAAI,CAAC,AAAC;IACzC,MAAM,EAAEU,mBAAmB,CAAA,EAAE,GAAG,MAAM;+CAAO,kBAAkB;MAAC,AAAC;IACjE,MAAMC,OAAO,GAAG,MAAMD,mBAAmB,CAACF,WAAW,EAAER,IAAI,CAAC,CAACY,KAAK,CAACC,OAAW,YAAA,CAAC,AAAC;IAEhF,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAG,MAAM;+CAAO,eAAe;MAAC,AAAC;IACtD,OAAOA,WAAW,CAACN,WAAW,EAAEG,OAAO,CAAC,CAACC,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;CAC7D,AAAC;QAxDWf,UAAU,GAAVA,UAAU"}
@@ -41,7 +41,7 @@ function printBundleSizes(bundles) {
41
41
  for (const [platform, bundleOutput] of Object.entries(bundles)){
42
42
  if (bundleOutput.hermesBytecodeBundle) {
43
43
  files.push([
44
- _chalk.default.bold(`index.${platform}.js (Hermes)`),
44
+ _chalk.default.bold(`index.${platform}.hbc`),
45
45
  bundleOutput.hermesBytecodeBundle
46
46
  ]);
47
47
  } else if (bundleOutput.code) {
@@ -52,7 +52,7 @@ function printBundleSizes(bundles) {
52
52
  }
53
53
  if (bundleOutput.hermesSourcemap) {
54
54
  files.push([
55
- _chalk.default.dim(`index.${platform}.js.map (Hermes)`),
55
+ _chalk.default.dim(`index.${platform}.hbc.map`),
56
56
  bundleOutput.hermesSourcemap
57
57
  ]);
58
58
  } else if (bundleOutput.map) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/printBundleSizes.ts"],"sourcesContent":["import { Platform } from '@expo/config';\nimport chalk from 'chalk';\nimport prettyBytes from 'pretty-bytes';\nimport table from 'text-table';\n\nimport * as Log from '../log';\nimport { stripAnsi } from '../utils/ansi';\nimport { learnMore } from '../utils/link';\nimport { BundleOutput } from './fork-bundleAsync';\n\nexport function printBundleSizes(bundles: Partial<Record<Platform, BundleOutput>>) {\n const files: [string, string | Uint8Array][] = [];\n\n for (const [platform, bundleOutput] of Object.entries(bundles) as [\n Platform,\n Pick<BundleOutput, 'hermesBytecodeBundle' | 'code' | 'hermesSourcemap' | 'map'>\n ][]) {\n if (bundleOutput.hermesBytecodeBundle) {\n files.push([chalk.bold(`index.${platform}.js (Hermes)`), bundleOutput.hermesBytecodeBundle]);\n } else if (bundleOutput.code) {\n files.push([chalk.bold(`index.${platform}.js`), bundleOutput.code]);\n }\n if (bundleOutput.hermesSourcemap) {\n files.push([chalk.dim(`index.${platform}.js.map (Hermes)`), bundleOutput.hermesSourcemap]);\n } else if (bundleOutput.map) {\n files.push([chalk.dim(`index.${platform}.js.map`), bundleOutput.map]);\n }\n }\n\n Log.log();\n Log.log(createFilesTable(files.sort((a, b) => a[1].length - b[1].length)));\n Log.log();\n Log.log(\n chalk`💡 JavaScript bundle sizes affect startup time. {dim ${learnMore(\n `https://expo.fyi/javascript-bundle-sizes`\n )}}`\n );\n Log.log();\n\n return files;\n}\n\nexport function createFilesTable(files: [string, string | Uint8Array][]): string {\n const tableData = files.map((item, index) => {\n const fileBranch =\n index === 0 ? (files.length > 1 ? '┌' : '─') : index === files.length - 1 ? '└' : '├';\n\n return [`${fileBranch} ${item[0]}`, prettyBytes(Buffer.byteLength(item[1], 'utf8'))];\n });\n return table([['Bundle', 'Size'].map((v) => chalk.underline(v)), ...tableData], {\n align: ['l', 'r'],\n stringLength: (str) => stripAnsi(str)?.length ?? 0,\n });\n}\n"],"names":["printBundleSizes","createFilesTable","Log","bundles","files","platform","bundleOutput","Object","entries","hermesBytecodeBundle","push","chalk","bold","code","hermesSourcemap","dim","map","log","sort","a","b","length","learnMore","tableData","item","index","fileBranch","prettyBytes","Buffer","byteLength","stripAnsi","table","v","underline","align","stringLength","str"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/export/printBundleSizes.ts"],"sourcesContent":["import { Platform } from '@expo/config';\nimport chalk from 'chalk';\nimport prettyBytes from 'pretty-bytes';\nimport table from 'text-table';\n\nimport * as Log from '../log';\nimport { stripAnsi } from '../utils/ansi';\nimport { learnMore } from '../utils/link';\nimport { BundleOutput } from './fork-bundleAsync';\n\nexport function printBundleSizes(bundles: Partial<Record<Platform, BundleOutput>>) {\n const files: [string, string | Uint8Array][] = [];\n\n for (const [platform, bundleOutput] of Object.entries(bundles) as [\n Platform,\n Pick<BundleOutput, 'hermesBytecodeBundle' | 'code' | 'hermesSourcemap' | 'map'>\n ][]) {\n if (bundleOutput.hermesBytecodeBundle) {\n files.push([chalk.bold(`index.${platform}.hbc`), bundleOutput.hermesBytecodeBundle]);\n } else if (bundleOutput.code) {\n files.push([chalk.bold(`index.${platform}.js`), bundleOutput.code]);\n }\n if (bundleOutput.hermesSourcemap) {\n files.push([chalk.dim(`index.${platform}.hbc.map`), bundleOutput.hermesSourcemap]);\n } else if (bundleOutput.map) {\n files.push([chalk.dim(`index.${platform}.js.map`), bundleOutput.map]);\n }\n }\n\n Log.log();\n Log.log(createFilesTable(files.sort((a, b) => a[1].length - b[1].length)));\n Log.log();\n Log.log(\n chalk`💡 JavaScript bundle sizes affect startup time. {dim ${learnMore(\n `https://expo.fyi/javascript-bundle-sizes`\n )}}`\n );\n Log.log();\n\n return files;\n}\n\nexport function createFilesTable(files: [string, string | Uint8Array][]): string {\n const tableData = files.map((item, index) => {\n const fileBranch =\n index === 0 ? (files.length > 1 ? '┌' : '─') : index === files.length - 1 ? '└' : '├';\n\n return [`${fileBranch} ${item[0]}`, prettyBytes(Buffer.byteLength(item[1], 'utf8'))];\n });\n return table([['Bundle', 'Size'].map((v) => chalk.underline(v)), ...tableData], {\n align: ['l', 'r'],\n stringLength: (str) => stripAnsi(str)?.length ?? 0,\n });\n}\n"],"names":["printBundleSizes","createFilesTable","Log","bundles","files","platform","bundleOutput","Object","entries","hermesBytecodeBundle","push","chalk","bold","code","hermesSourcemap","dim","map","log","sort","a","b","length","learnMore","tableData","item","index","fileBranch","prettyBytes","Buffer","byteLength","stripAnsi","table","v","underline","align","stringLength","str"],"mappings":"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"}
@@ -52,6 +52,7 @@ async function resolveOptionsAsync(projectRoot, args) {
52
52
  return {
53
53
  outputDir: (ref1 = args["--output-dir"]) != null ? ref1 : "dist",
54
54
  platforms,
55
+ minify: !args["--no-minify"],
55
56
  clear: !!args["--clear"],
56
57
  dev: !!args["--dev"],
57
58
  maxWorkers: args["--max-workers"],
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/resolveOptions.ts"],"sourcesContent":["import { getConfig, Platform } from '@expo/config';\n\nimport { getPlatformBundlers, PlatformBundlers } from '../start/server/platformBundlers';\nimport { CommandError } from '../utils/errors';\n\nexport type Options = {\n outputDir: string;\n platforms: Platform[];\n maxWorkers?: number;\n dev: boolean;\n clear: boolean;\n dumpAssetmap: boolean;\n dumpSourcemap: boolean;\n};\n\n/** Returns an array of platforms based on the input platform identifier and runtime constraints. */\nexport function resolvePlatformOption(\n platformBundlers: PlatformBundlers,\n platform: string = 'all'\n): Platform[] {\n const platforms: Partial<PlatformBundlers> = Object.fromEntries(\n Object.entries(platformBundlers).filter(([, bundler]) => bundler === 'metro')\n );\n\n if (!Object.keys(platforms).length) {\n throw new CommandError(\n `No platforms are configured to use the Metro bundler in the project Expo config.`\n );\n }\n\n const assertPlatformBundler = (platform: Platform) => {\n if (!platforms[platform]) {\n throw new CommandError(\n 'BAD_ARGS',\n `Platform \"${platform}\" is not configured to use the Metro bundler in the project Expo config.`\n );\n }\n };\n\n switch (platform) {\n case 'ios':\n assertPlatformBundler('ios');\n return ['ios'];\n case 'web':\n assertPlatformBundler('web');\n return ['web'];\n case 'android':\n assertPlatformBundler('android');\n return ['android'];\n case 'all':\n return Object.keys(platforms) as Platform[];\n default:\n throw new CommandError(\n `Unsupported platform \"${platform}\". Options are: ${Object.keys(platforms).join(',')}, all`\n );\n }\n}\n\nexport async function resolveOptionsAsync(projectRoot: string, args: any): Promise<Options> {\n const { exp } = getConfig(projectRoot, { skipPlugins: true, skipSDKVersionRequirement: true });\n const platformBundlers = getPlatformBundlers(exp);\n const platforms: Platform[] = resolvePlatformOption(\n platformBundlers,\n args['--platform'] ?? 'all'\n );\n\n return {\n outputDir: args['--output-dir'] ?? 'dist',\n platforms,\n clear: !!args['--clear'],\n dev: !!args['--dev'],\n maxWorkers: args['--max-workers'],\n dumpAssetmap: !!args['--dump-assetmap'],\n dumpSourcemap: !!args['--dump-sourcemap'],\n };\n}\n"],"names":["resolvePlatformOption","resolveOptionsAsync","platformBundlers","platform","platforms","Object","fromEntries","entries","filter","bundler","keys","length","CommandError","assertPlatformBundler","join","projectRoot","args","exp","getConfig","skipPlugins","skipSDKVersionRequirement","getPlatformBundlers","outputDir","clear","dev","maxWorkers","dumpAssetmap","dumpSourcemap"],"mappings":"AAAA;;;;QAgBgBA,qBAAqB,GAArBA,qBAAqB;QA0CfC,mBAAmB,GAAnBA,mBAAmB;AA1DL,IAAA,OAAc,WAAd,cAAc,CAAA;AAEI,IAAA,iBAAkC,WAAlC,kCAAkC,CAAA;AAC3D,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AAavC,SAASD,qBAAqB,CACnCE,gBAAkC,EAClCC,SAAgB,GAAG,KAAK,EACZ;IACZ,MAAMC,SAAS,GAA8BC,MAAM,CAACC,WAAW,CAC7DD,MAAM,CAACE,OAAO,CAACL,gBAAgB,CAAC,CAACM,MAAM,CAAC,CAAC,GAAGC,OAAO,CAAC,GAAKA,OAAO,KAAK,OAAO;IAAA,CAAC,CAC9E,AAAC;IAEF,IAAI,CAACJ,MAAM,CAACK,IAAI,CAACN,SAAS,CAAC,CAACO,MAAM,EAAE;QAClC,MAAM,IAAIC,OAAY,aAAA,CACpB,CAAC,gFAAgF,CAAC,CACnF,CAAC;KACH;IAED,MAAMC,qBAAqB,GAAG,CAACV,QAAkB,GAAK;QACpD,IAAI,CAACC,SAAS,CAACD,QAAQ,CAAC,EAAE;YACxB,MAAM,IAAIS,OAAY,aAAA,CACpB,UAAU,EACV,CAAC,UAAU,EAAET,QAAQ,CAAC,wEAAwE,CAAC,CAChG,CAAC;SACH;KACF,AAAC;IAEF,OAAQA,SAAQ;QACd,KAAK,KAAK;YACRU,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO;gBAAC,KAAK;aAAC,CAAC;QACjB,KAAK,KAAK;YACRA,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO;gBAAC,KAAK;aAAC,CAAC;QACjB,KAAK,SAAS;YACZA,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACjC,OAAO;gBAAC,SAAS;aAAC,CAAC;QACrB,KAAK,KAAK;YACR,OAAOR,MAAM,CAACK,IAAI,CAACN,SAAS,CAAC,CAAe;QAC9C;YACE,MAAM,IAAIQ,OAAY,aAAA,CACpB,CAAC,sBAAsB,EAAET,SAAQ,CAAC,gBAAgB,EAAEE,MAAM,CAACK,IAAI,CAACN,SAAS,CAAC,CAACU,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAC5F,CAAC;KACL;CACF;AAEM,eAAeb,mBAAmB,CAACc,WAAmB,EAAEC,IAAS,EAAoB;IAC1F,MAAM,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAqE,CAAA,UAArE,CAACH,WAAW,EAAE;QAAEI,WAAW,EAAE,IAAI;QAAEC,yBAAyB,EAAE,IAAI;KAAE,CAAC,AAAC;IAC/F,MAAMlB,gBAAgB,GAAGmB,CAAAA,GAAAA,iBAAmB,AAAK,CAAA,oBAAL,CAACJ,GAAG,CAAC,AAAC;QAGhDD,GAAkB;IAFpB,MAAMZ,SAAS,GAAeJ,qBAAqB,CACjDE,gBAAgB,EAChBc,CAAAA,GAAkB,GAAlBA,IAAI,CAAC,YAAY,CAAC,YAAlBA,GAAkB,GAAI,KAAK,CAC5B,AAAC;QAGWA,IAAoB;IADjC,OAAO;QACLM,SAAS,EAAEN,CAAAA,IAAoB,GAApBA,IAAI,CAAC,cAAc,CAAC,YAApBA,IAAoB,GAAI,MAAM;QACzCZ,SAAS;QACTmB,KAAK,EAAE,CAAC,CAACP,IAAI,CAAC,SAAS,CAAC;QACxBQ,GAAG,EAAE,CAAC,CAACR,IAAI,CAAC,OAAO,CAAC;QACpBS,UAAU,EAAET,IAAI,CAAC,eAAe,CAAC;QACjCU,YAAY,EAAE,CAAC,CAACV,IAAI,CAAC,iBAAiB,CAAC;QACvCW,aAAa,EAAE,CAAC,CAACX,IAAI,CAAC,kBAAkB,CAAC;KAC1C,CAAC;CACH"}
1
+ {"version":3,"sources":["../../../src/export/resolveOptions.ts"],"sourcesContent":["import { getConfig, Platform } from '@expo/config';\n\nimport { getPlatformBundlers, PlatformBundlers } from '../start/server/platformBundlers';\nimport { CommandError } from '../utils/errors';\n\nexport type Options = {\n outputDir: string;\n platforms: Platform[];\n maxWorkers?: number;\n dev: boolean;\n clear: boolean;\n minify: boolean;\n dumpAssetmap: boolean;\n dumpSourcemap: boolean;\n};\n\n/** Returns an array of platforms based on the input platform identifier and runtime constraints. */\nexport function resolvePlatformOption(\n platformBundlers: PlatformBundlers,\n platform: string = 'all'\n): Platform[] {\n const platforms: Partial<PlatformBundlers> = Object.fromEntries(\n Object.entries(platformBundlers).filter(([, bundler]) => bundler === 'metro')\n );\n\n if (!Object.keys(platforms).length) {\n throw new CommandError(\n `No platforms are configured to use the Metro bundler in the project Expo config.`\n );\n }\n\n const assertPlatformBundler = (platform: Platform) => {\n if (!platforms[platform]) {\n throw new CommandError(\n 'BAD_ARGS',\n `Platform \"${platform}\" is not configured to use the Metro bundler in the project Expo config.`\n );\n }\n };\n\n switch (platform) {\n case 'ios':\n assertPlatformBundler('ios');\n return ['ios'];\n case 'web':\n assertPlatformBundler('web');\n return ['web'];\n case 'android':\n assertPlatformBundler('android');\n return ['android'];\n case 'all':\n return Object.keys(platforms) as Platform[];\n default:\n throw new CommandError(\n `Unsupported platform \"${platform}\". Options are: ${Object.keys(platforms).join(',')}, all`\n );\n }\n}\n\nexport async function resolveOptionsAsync(projectRoot: string, args: any): Promise<Options> {\n const { exp } = getConfig(projectRoot, { skipPlugins: true, skipSDKVersionRequirement: true });\n const platformBundlers = getPlatformBundlers(exp);\n const platforms: Platform[] = resolvePlatformOption(\n platformBundlers,\n args['--platform'] ?? 'all'\n );\n\n return {\n outputDir: args['--output-dir'] ?? 'dist',\n platforms,\n minify: !args['--no-minify'],\n clear: !!args['--clear'],\n dev: !!args['--dev'],\n maxWorkers: args['--max-workers'],\n dumpAssetmap: !!args['--dump-assetmap'],\n dumpSourcemap: !!args['--dump-sourcemap'],\n };\n}\n"],"names":["resolvePlatformOption","resolveOptionsAsync","platformBundlers","platform","platforms","Object","fromEntries","entries","filter","bundler","keys","length","CommandError","assertPlatformBundler","join","projectRoot","args","exp","getConfig","skipPlugins","skipSDKVersionRequirement","getPlatformBundlers","outputDir","minify","clear","dev","maxWorkers","dumpAssetmap","dumpSourcemap"],"mappings":"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"}
@@ -10,6 +10,7 @@ var _webSupportProjectPrerequisite = require("../../start/doctor/web/WebSupportP
10
10
  var _platformBundlers = require("../../start/server/platformBundlers");
11
11
  var _webpackBundlerDevServer = require("../../start/server/webpack/WebpackBundlerDevServer");
12
12
  var _errors = require("../../utils/errors");
13
+ var _nodeEnv = require("../../utils/nodeEnv");
13
14
  function _interopRequireDefault(obj) {
14
15
  return obj && obj.__esModule ? obj : {
15
16
  default: obj
@@ -18,6 +19,8 @@ function _interopRequireDefault(obj) {
18
19
  async function exportWebAsync(projectRoot, options) {
19
20
  // Ensure webpack is available
20
21
  await new _webSupportProjectPrerequisite.WebSupportProjectPrerequisite(projectRoot).assertAsync();
22
+ (0, _nodeEnv).setNodeEnv(options.dev ? "development" : "production");
23
+ require("@expo/env").load(projectRoot);
21
24
  const { exp } = (0, _config).getConfig(projectRoot);
22
25
  const platformBundlers = (0, _platformBundlers).getPlatformBundlers(exp);
23
26
  // Create a bundler interface
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/export/web/exportWebAsync.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\n\nimport { Log } from '../../log';\nimport { WebSupportProjectPrerequisite } from '../../start/doctor/web/WebSupportProjectPrerequisite';\nimport { getPlatformBundlers } from '../../start/server/platformBundlers';\nimport { WebpackBundlerDevServer } from '../../start/server/webpack/WebpackBundlerDevServer';\nimport { CommandError } from '../../utils/errors';\nimport { Options } from './resolveOptions';\n\nexport async function exportWebAsync(projectRoot: string, options: Options) {\n // Ensure webpack is available\n await new WebSupportProjectPrerequisite(projectRoot).assertAsync();\n\n const { exp } = getConfig(projectRoot);\n const platformBundlers = getPlatformBundlers(exp);\n // Create a bundler interface\n const bundler = new WebpackBundlerDevServer(projectRoot, platformBundlers, false);\n\n // If the user set `web.bundler: 'metro'` then they should use `expo export` instead.\n if (!bundler.isTargetingWeb()) {\n throw new CommandError(\n chalk`{bold expo export:web} can only be used with Webpack. Use {bold expo export} for other bundlers.`\n );\n }\n\n Log.log(`Exporting with Webpack...`);\n\n // Bundle the app\n await bundler.bundleAsync({\n mode: options.dev ? 'development' : 'production',\n clear: options.clear,\n });\n}\n"],"names":["exportWebAsync","projectRoot","options","WebSupportProjectPrerequisite","assertAsync","exp","getConfig","platformBundlers","getPlatformBundlers","bundler","WebpackBundlerDevServer","isTargetingWeb","CommandError","chalk","Log","log","bundleAsync","mode","dev","clear"],"mappings":"AAAA;;;;QAUsBA,cAAc,GAAdA,cAAc;AAVV,IAAA,OAAc,WAAd,cAAc,CAAA;AACtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEL,IAAA,IAAW,WAAX,WAAW,CAAA;AACe,IAAA,8BAAsD,WAAtD,sDAAsD,CAAA;AAChE,IAAA,iBAAqC,WAArC,qCAAqC,CAAA;AACjC,IAAA,wBAAoD,WAApD,oDAAoD,CAAA;AAC/D,IAAA,OAAoB,WAApB,oBAAoB,CAAA;;;;;;AAG1C,eAAeA,cAAc,CAACC,WAAmB,EAAEC,OAAgB,EAAE;IAC1E,8BAA8B;IAC9B,MAAM,IAAIC,8BAA6B,8BAAA,CAACF,WAAW,CAAC,CAACG,WAAW,EAAE,CAAC;IAEnE,MAAM,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAa,CAAA,UAAb,CAACL,WAAW,CAAC,AAAC;IACvC,MAAMM,gBAAgB,GAAGC,CAAAA,GAAAA,iBAAmB,AAAK,CAAA,oBAAL,CAACH,GAAG,CAAC,AAAC;IAClD,6BAA6B;IAC7B,MAAMI,OAAO,GAAG,IAAIC,wBAAuB,wBAAA,CAACT,WAAW,EAAEM,gBAAgB,EAAE,KAAK,CAAC,AAAC;IAElF,qFAAqF;IACrF,IAAI,CAACE,OAAO,CAACE,cAAc,EAAE,EAAE;QAC7B,MAAM,IAAIC,OAAY,aAAA,CACpBC,MAAK,QAAA,CAAC,gGAAgG,CAAC,CACxG,CAAC;KACH;IAEDC,IAAG,IAAA,CAACC,GAAG,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAErC,iBAAiB;IACjB,MAAMN,OAAO,CAACO,WAAW,CAAC;QACxBC,IAAI,EAAEf,OAAO,CAACgB,GAAG,GAAG,aAAa,GAAG,YAAY;QAChDC,KAAK,EAAEjB,OAAO,CAACiB,KAAK;KACrB,CAAC,CAAC;CACJ"}
1
+ {"version":3,"sources":["../../../../src/export/web/exportWebAsync.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\n\nimport { Log } from '../../log';\nimport { WebSupportProjectPrerequisite } from '../../start/doctor/web/WebSupportProjectPrerequisite';\nimport { getPlatformBundlers } from '../../start/server/platformBundlers';\nimport { WebpackBundlerDevServer } from '../../start/server/webpack/WebpackBundlerDevServer';\nimport { CommandError } from '../../utils/errors';\nimport { setNodeEnv } from '../../utils/nodeEnv';\nimport { Options } from './resolveOptions';\n\nexport async function exportWebAsync(projectRoot: string, options: Options) {\n // Ensure webpack is available\n await new WebSupportProjectPrerequisite(projectRoot).assertAsync();\n\n setNodeEnv(options.dev ? 'development' : 'production');\n require('@expo/env').load(projectRoot);\n\n const { exp } = getConfig(projectRoot);\n const platformBundlers = getPlatformBundlers(exp);\n // Create a bundler interface\n const bundler = new WebpackBundlerDevServer(projectRoot, platformBundlers, false);\n\n // If the user set `web.bundler: 'metro'` then they should use `expo export` instead.\n if (!bundler.isTargetingWeb()) {\n throw new CommandError(\n chalk`{bold expo export:web} can only be used with Webpack. Use {bold expo export} for other bundlers.`\n );\n }\n\n Log.log(`Exporting with Webpack...`);\n\n // Bundle the app\n await bundler.bundleAsync({\n mode: options.dev ? 'development' : 'production',\n clear: options.clear,\n });\n}\n"],"names":["exportWebAsync","projectRoot","options","WebSupportProjectPrerequisite","assertAsync","setNodeEnv","dev","require","load","exp","getConfig","platformBundlers","getPlatformBundlers","bundler","WebpackBundlerDevServer","isTargetingWeb","CommandError","chalk","Log","log","bundleAsync","mode","clear"],"mappings":"AAAA;;;;QAWsBA,cAAc,GAAdA,cAAc;AAXV,IAAA,OAAc,WAAd,cAAc,CAAA;AACtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEL,IAAA,IAAW,WAAX,WAAW,CAAA;AACe,IAAA,8BAAsD,WAAtD,sDAAsD,CAAA;AAChE,IAAA,iBAAqC,WAArC,qCAAqC,CAAA;AACjC,IAAA,wBAAoD,WAApD,oDAAoD,CAAA;AAC/D,IAAA,OAAoB,WAApB,oBAAoB,CAAA;AACtB,IAAA,QAAqB,WAArB,qBAAqB,CAAA;;;;;;AAGzC,eAAeA,cAAc,CAACC,WAAmB,EAAEC,OAAgB,EAAE;IAC1E,8BAA8B;IAC9B,MAAM,IAAIC,8BAA6B,8BAAA,CAACF,WAAW,CAAC,CAACG,WAAW,EAAE,CAAC;IAEnEC,CAAAA,GAAAA,QAAU,AAA4C,CAAA,WAA5C,CAACH,OAAO,CAACI,GAAG,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC;IACvDC,OAAO,CAAC,WAAW,CAAC,CAACC,IAAI,CAACP,WAAW,CAAC,CAAC;IAEvC,MAAM,EAAEQ,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAa,CAAA,UAAb,CAACT,WAAW,CAAC,AAAC;IACvC,MAAMU,gBAAgB,GAAGC,CAAAA,GAAAA,iBAAmB,AAAK,CAAA,oBAAL,CAACH,GAAG,CAAC,AAAC;IAClD,6BAA6B;IAC7B,MAAMI,OAAO,GAAG,IAAIC,wBAAuB,wBAAA,CAACb,WAAW,EAAEU,gBAAgB,EAAE,KAAK,CAAC,AAAC;IAElF,qFAAqF;IACrF,IAAI,CAACE,OAAO,CAACE,cAAc,EAAE,EAAE;QAC7B,MAAM,IAAIC,OAAY,aAAA,CACpBC,MAAK,QAAA,CAAC,gGAAgG,CAAC,CACxG,CAAC;KACH;IAEDC,IAAG,IAAA,CAACC,GAAG,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAErC,iBAAiB;IACjB,MAAMN,OAAO,CAACO,WAAW,CAAC;QACxBC,IAAI,EAAEnB,OAAO,CAACI,GAAG,GAAG,aAAa,GAAG,YAAY;QAChDgB,KAAK,EAAEpB,OAAO,CAACoB,KAAK;KACrB,CAAC,CAAC;CACJ"}