@expo/cli 0.1.3 → 0.2.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.
- package/build/bin/cli +89 -4
- package/build/bin/cli.map +1 -1
- package/build/src/api/rest/wrapFetchWithOffline.js +2 -23
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
- package/build/src/customize/customizeAsync.js +40 -0
- package/build/src/customize/customizeAsync.js.map +1 -0
- package/build/src/customize/generate.js +77 -0
- package/build/src/customize/generate.js.map +1 -0
- package/build/src/customize/index.js +41 -0
- package/build/src/customize/index.js.map +1 -0
- package/build/src/customize/resolveOptions.js +18 -0
- package/build/src/customize/resolveOptions.js.map +1 -0
- package/build/src/customize/templates.js +118 -0
- package/build/src/customize/templates.js.map +1 -0
- package/build/src/export/createMetadataJson.js +10 -7
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/exportApp.js +32 -0
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +2 -3
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/fork-bundleAsync.js +51 -34
- package/build/src/export/fork-bundleAsync.js.map +1 -1
- package/build/src/export/index.js +15 -10
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/printBundleSizes.js +27 -48
- package/build/src/export/printBundleSizes.js.map +1 -1
- package/build/src/export/resolveOptions.js +44 -5
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +2 -1
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +37 -0
- package/build/src/export/web/exportWebAsync.js.map +1 -0
- package/build/src/export/web/index.js +66 -0
- package/build/src/export/web/index.js.map +1 -0
- package/build/src/export/web/resolveOptions.js +13 -0
- package/build/src/export/web/resolveOptions.js.map +1 -0
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/install/checkPackages.js +2 -1
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/index.js +1 -0
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +13 -5
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/resolveOptions.js +12 -65
- package/build/src/install/resolveOptions.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +5 -26
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/log.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +5 -23
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/index.js +18 -12
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +11 -12
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +17 -0
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +2 -1
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +5 -5
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/run/android/resolveInstallApkName.js +5 -26
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js +3 -3
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js +3 -0
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +1 -1
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +275 -0
- package/build/src/run/ios/XcodeBuild.js.map +1 -0
- package/build/src/run/ios/XcodeBuild.types.js +6 -0
- package/build/src/run/ios/XcodeBuild.types.js.map +1 -0
- package/build/src/run/ios/appleDevice/AppleDevice.js +161 -0
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -0
- package/build/src/run/ios/appleDevice/ClientManager.js +161 -0
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/AFCClient.js +195 -0
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +107 -0
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +97 -0
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +140 -0
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +91 -0
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +21 -0
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +117 -0
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +90 -0
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +332 -0
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +115 -0
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +126 -0
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +74 -0
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +65 -0
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -0
- package/build/src/run/ios/codeSigning/Security.js +85 -0
- package/build/src/run/ios/codeSigning/Security.js.map +1 -0
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +77 -0
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -0
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +102 -0
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -0
- package/build/src/run/ios/codeSigning/settings.js +21 -0
- package/build/src/run/ios/codeSigning/settings.js.map +1 -0
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +76 -0
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -0
- package/build/src/run/ios/index.js +98 -0
- package/build/src/run/ios/index.js.map +1 -0
- package/build/src/run/ios/launchApp.js +75 -0
- package/build/src/run/ios/launchApp.js.map +1 -0
- package/build/src/run/ios/options/promptDevice.js +50 -0
- package/build/src/run/ios/options/promptDevice.js.map +1 -0
- package/build/src/run/ios/options/resolveDevice.js +92 -0
- package/build/src/run/ios/options/resolveDevice.js.map +1 -0
- package/build/src/run/ios/options/resolveNativeScheme.js +92 -0
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -0
- package/build/src/run/ios/options/resolveOptions.js +44 -0
- package/build/src/run/ios/options/resolveOptions.js.map +1 -0
- package/build/src/run/ios/options/resolveXcodeProject.js +39 -0
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -0
- package/build/src/run/ios/runIosAsync.js +85 -0
- package/build/src/run/ios/runIosAsync.js.map +1 -0
- package/build/src/run/resolveBundlerProps.js +9 -6
- package/build/src/run/resolveBundlerProps.js.map +1 -1
- package/build/src/run/startBundler.js +4 -2
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/start/doctor/Prerequisite.js +4 -4
- package/build/src/start/doctor/Prerequisite.js.map +1 -1
- package/build/src/start/doctor/SecurityBinPrerequisite.js +27 -0
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +2 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +69 -0
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js +2 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +3 -2
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +7 -13
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +3 -24
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +2 -23
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +17 -9
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +2 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +4 -3
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +32 -31
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/interface/KeyPressHandler.js +2 -0
- package/build/src/start/interface/KeyPressHandler.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +5 -5
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +3 -2
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +2 -1
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js +4 -24
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/ADBServer.js +17 -32
- package/build/src/start/platforms/android/ADBServer.js.map +1 -1
- package/build/src/start/platforms/android/AndroidSdk.js +41 -0
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -0
- package/build/src/start/platforms/android/activateWindow.js +4 -4
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +8 -3
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/adbReverse.js +3 -2
- package/build/src/start/platforms/android/adbReverse.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +8 -0
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +2 -2
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +1 -5
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +5 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +4 -4
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +1 -5
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +14 -0
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +220 -0
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -0
- package/build/src/start/platforms/ios/xcrun.js +2 -23
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/devices.js +2 -0
- package/build/src/start/project/devices.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +6 -5
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +15 -8
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +15 -5
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevelopmentSession.js +4 -0
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +10 -3
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +9 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +5 -0
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +11 -1
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/resolveFromProject.js +8 -0
- package/build/src/start/server/metro/resolveFromProject.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +115 -0
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -0
- package/build/src/start/server/middleware/ClassicManifestMiddleware.js +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +9 -4
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +24 -0
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +2 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +57 -6
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +6 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +62 -0
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -0
- package/build/src/start/server/platformBundlers.js +18 -0
- package/build/src/start/server/platformBundlers.js.map +1 -0
- package/build/src/start/server/webTemplate.js +68 -0
- package/build/src/start/server/webTemplate.js.map +1 -0
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +59 -19
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/compile.js +64 -0
- package/build/src/start/server/webpack/compile.js.map +1 -0
- package/build/src/start/startAsync.js +21 -17
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/FileNotifier.js +5 -2
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/analytics/rudderstackClient.js +30 -3
- package/build/src/utils/analytics/rudderstackClient.js.map +1 -1
- package/build/src/utils/cocoapods.js +47 -0
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/dir.js +6 -1
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js +3 -2
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +7 -32
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +3 -2
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +3 -0
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/exit.js +4 -25
- package/build/src/utils/exit.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +6 -2
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/nodeModules.js +13 -102
- package/build/src/utils/nodeModules.js.map +1 -1
- package/build/src/utils/npm.js +3 -24
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/ora.js +1 -13
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +59 -0
- package/build/src/utils/plist.js.map +1 -0
- package/build/src/utils/progress.js +46 -0
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +19 -3
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/resolveArgs.js +4 -1
- package/build/src/utils/resolveArgs.js.map +1 -1
- package/build/src/utils/tar.js +3 -0
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/terminal.js +10 -0
- package/build/src/utils/terminal.js.map +1 -0
- package/build/src/utils/validateApplicationId.js +9 -2
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/utils/variadic.js +47 -0
- package/build/src/utils/variadic.js.map +1 -0
- package/package.json +14 -10
- package/static/template/babel.config.js +6 -0
- package/static/template/index.html +117 -0
- package/static/template/metro.config.js +4 -0
- package/static/template/serve.json +13 -0
- package/static/template/webpack.config.js +7 -0
package/build/bin/cli
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
var _arg = _interopRequireDefault(require("arg"));
|
|
4
4
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
5
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
6
|
+
var _getenv = require("getenv");
|
|
5
7
|
function _interopRequireDefault(obj) {
|
|
6
8
|
return obj && obj.__esModule ? obj : {
|
|
7
9
|
default: obj
|
|
@@ -28,9 +30,20 @@ function _interopRequireWildcard(obj) {
|
|
|
28
30
|
return newObj;
|
|
29
31
|
}
|
|
30
32
|
}
|
|
33
|
+
// Setup before requiring `debug`.
|
|
34
|
+
if ((0, _getenv).boolish("EXPO_DEBUG", false)) {
|
|
35
|
+
_debug.default.enable("expo:*");
|
|
36
|
+
} else if (_debug.default.enabled("expo:")) {
|
|
37
|
+
process.env.EXPO_DEBUG = "1";
|
|
38
|
+
}
|
|
31
39
|
const defaultCmd = "start";
|
|
32
40
|
const commands = {
|
|
33
41
|
// Add a new command here
|
|
42
|
+
"run:ios": ()=>Promise.resolve().then(function() {
|
|
43
|
+
return _interopRequireWildcard(require("../src/run/ios"));
|
|
44
|
+
}).then((i)=>i.expoRunIos
|
|
45
|
+
)
|
|
46
|
+
,
|
|
34
47
|
"run:android": ()=>Promise.resolve().then(function() {
|
|
35
48
|
return _interopRequireWildcard(require("../src/run/android"));
|
|
36
49
|
}).then((i)=>i.expoRunAndroid
|
|
@@ -56,12 +69,22 @@ const commands = {
|
|
|
56
69
|
}).then((i)=>i.expoExport
|
|
57
70
|
)
|
|
58
71
|
,
|
|
72
|
+
"export:web": ()=>Promise.resolve().then(function() {
|
|
73
|
+
return _interopRequireWildcard(require("../src/export/web"));
|
|
74
|
+
}).then((i)=>i.expoExportWeb
|
|
75
|
+
)
|
|
76
|
+
,
|
|
59
77
|
// Auxiliary commands
|
|
60
78
|
install: ()=>Promise.resolve().then(function() {
|
|
61
79
|
return _interopRequireWildcard(require("../src/install"));
|
|
62
80
|
}).then((i)=>i.expoInstall
|
|
63
81
|
)
|
|
64
82
|
,
|
|
83
|
+
customize: ()=>Promise.resolve().then(function() {
|
|
84
|
+
return _interopRequireWildcard(require("../src/customize"));
|
|
85
|
+
}).then((i)=>i.expoCustomize
|
|
86
|
+
)
|
|
87
|
+
,
|
|
65
88
|
// Auth
|
|
66
89
|
login: ()=>Promise.resolve().then(function() {
|
|
67
90
|
return _interopRequireWildcard(require("../src/login"));
|
|
@@ -95,14 +118,14 @@ const args = (0, _arg).default({
|
|
|
95
118
|
});
|
|
96
119
|
if (args["--version"]) {
|
|
97
120
|
// Version is added in the build script.
|
|
98
|
-
console.log("0.
|
|
121
|
+
console.log("0.2.0");
|
|
99
122
|
process.exit(0);
|
|
100
123
|
}
|
|
101
124
|
// Check if we are running `npx expo <subcommand>` or `npx expo`
|
|
102
125
|
const isSubcommand = Boolean(commands[args._[0]]);
|
|
103
126
|
// Handle `--help` flag
|
|
104
127
|
if (!isSubcommand && args["--help"]) {
|
|
105
|
-
const { login , logout , whoami , register , start , install , export: _export , config , prebuild , "run:android": runAndroid , ...others } = commands;
|
|
128
|
+
const { login , logout , whoami , register , start , install , export: _export , config , customize , prebuild , "run:ios": runIos , "run:android": runAndroid , ...others } = commands;
|
|
106
129
|
console.log(_chalk.default`
|
|
107
130
|
{bold Usage}
|
|
108
131
|
{dim $} npx expo <command>
|
|
@@ -110,15 +133,19 @@ if (!isSubcommand && args["--help"]) {
|
|
|
110
133
|
{bold Commands}
|
|
111
134
|
${Object.keys({
|
|
112
135
|
start,
|
|
113
|
-
install,
|
|
114
136
|
export: _export,
|
|
115
|
-
config,
|
|
116
137
|
...others
|
|
117
138
|
}).join(", ")}
|
|
118
139
|
${Object.keys({
|
|
140
|
+
"run:ios": runIos,
|
|
119
141
|
"run:android": runAndroid,
|
|
120
142
|
prebuild
|
|
121
143
|
}).join(", ")}
|
|
144
|
+
${Object.keys({
|
|
145
|
+
install,
|
|
146
|
+
customize,
|
|
147
|
+
config
|
|
148
|
+
}).join(", ")}
|
|
122
149
|
{dim ${Object.keys({
|
|
123
150
|
login,
|
|
124
151
|
logout,
|
|
@@ -135,6 +162,64 @@ if (!isSubcommand && args["--help"]) {
|
|
|
135
162
|
`);
|
|
136
163
|
process.exit(0);
|
|
137
164
|
}
|
|
165
|
+
// NOTE(EvanBacon): Squat some directory names to help with migration,
|
|
166
|
+
// users can still use folders named "send" or "eject" by using the fully qualified `npx expo start ./send`.
|
|
167
|
+
if (!isSubcommand) {
|
|
168
|
+
const migrationMap = {
|
|
169
|
+
init: "npx create-expo-app",
|
|
170
|
+
eject: "npx expo prebuild",
|
|
171
|
+
"start:web": "npx expo start --web",
|
|
172
|
+
"build:ios": "eas build -p ios",
|
|
173
|
+
"build:android": "eas build -p android",
|
|
174
|
+
"client:install:ios": "npx expo start --ios",
|
|
175
|
+
"client:install:android": "npx expo start --android",
|
|
176
|
+
doctor: "expo doctor",
|
|
177
|
+
upgrade: "expo upgrade",
|
|
178
|
+
"customize:web": "npx expo customize",
|
|
179
|
+
publish: "eas update",
|
|
180
|
+
"publish:set": "eas update",
|
|
181
|
+
"publish:rollback": "eas update",
|
|
182
|
+
"publish:history": "eas update",
|
|
183
|
+
"publish:details": "eas update",
|
|
184
|
+
"build:web": "npx expo export",
|
|
185
|
+
"credentials:manager": `eas credentials`,
|
|
186
|
+
"fetch:ios:certs": `eas credentials`,
|
|
187
|
+
"fetch:android:keystore": `eas credentials`,
|
|
188
|
+
"fetch:android:hashes": `eas credentials`,
|
|
189
|
+
"fetch:android:upload-cert": `eas credentials`,
|
|
190
|
+
"push:android:upload": `eas credentials`,
|
|
191
|
+
"push:android:show": `eas credentials`,
|
|
192
|
+
"push:android:clear": `eas credentials`,
|
|
193
|
+
url: `eas build:list`,
|
|
194
|
+
"url:ipa": `eas build:list`,
|
|
195
|
+
"url:apk": `eas build:list`,
|
|
196
|
+
webhooks: `eas webhook`,
|
|
197
|
+
"webhooks:add": `eas webhook:create`,
|
|
198
|
+
"webhooks:remove": `eas webhook:delete`,
|
|
199
|
+
"webhooks:update": `eas webhook:update`,
|
|
200
|
+
"build:status": `eas build:list`,
|
|
201
|
+
"upload:android": `eas submit -p android`,
|
|
202
|
+
"upload:ios": `eas submit -p ios`
|
|
203
|
+
};
|
|
204
|
+
const subcommand = args._[0];
|
|
205
|
+
if (subcommand in migrationMap) {
|
|
206
|
+
const replacement = migrationMap[subcommand];
|
|
207
|
+
console.log();
|
|
208
|
+
console.log(_chalk.default.yellow` {gray $} {bold expo ${subcommand}} is not supported in the local CLI, please use {bold ${replacement}} instead`);
|
|
209
|
+
console.log();
|
|
210
|
+
process.exit(1);
|
|
211
|
+
}
|
|
212
|
+
const deprecated = [
|
|
213
|
+
"send",
|
|
214
|
+
"client:ios"
|
|
215
|
+
];
|
|
216
|
+
if (deprecated.includes(subcommand)) {
|
|
217
|
+
console.log();
|
|
218
|
+
console.log(_chalk.default.yellow` {gray $} {bold expo ${subcommand}} is deprecated`);
|
|
219
|
+
console.log();
|
|
220
|
+
process.exit(1);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
138
223
|
const command = isSubcommand ? args._[0] : defaultCmd;
|
|
139
224
|
const commandArgs = isSubcommand ? args._.slice(1) : args._;
|
|
140
225
|
// Push the help flag to the subcommand args.
|
package/build/bin/cli.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport arg from 'arg';\nimport chalk from 'chalk';\n\nconst defaultCmd = 'start';\n\nexport type Command = (argv?: string[]) => void;\n\nconst commands: { [command: string]: () => Promise<Command> } = {\n // Add a new command here\n 'run:android': () => import('../src/run/android').then((i) => i.expoRunAndroid),\n start: () => import('../src/start').then((i) => i.expoStart),\n prebuild: () => import('../src/prebuild').then((i) => i.expoPrebuild),\n config: () => import('../src/config').then((i) => i.expoConfig),\n export: () => import('../src/export').then((i) => i.expoExport),\n\n // Auxiliary commands\n install: () => import('../src/install').then((i) => i.expoInstall),\n\n // Auth\n login: () => import('../src/login').then((i) => i.expoLogin),\n logout: () => import('../src/logout').then((i) => i.expoLogout),\n register: () => import('../src/register').then((i) => i.expoRegister),\n whoami: () => import('../src/whoami').then((i) => i.expoWhoami),\n};\n\nconst args = arg(\n {\n // Types\n '--version': Boolean,\n '--help': Boolean,\n\n // Aliases\n '-v': '--version',\n '-h': '--help',\n },\n {\n permissive: true,\n }\n);\n\nif (args['--version']) {\n // Version is added in the build script.\n console.log(process.env.__EXPO_VERSION);\n process.exit(0);\n}\n\n// Check if we are running `npx expo <subcommand>` or `npx expo`\nconst isSubcommand = Boolean(commands[args._[0]]);\n\n// Handle `--help` flag\nif (!isSubcommand && args['--help']) {\n const {\n login,\n logout,\n whoami,\n register,\n start,\n install,\n export: _export,\n config,\n prebuild,\n 'run:android': runAndroid,\n ...others\n } = commands;\n\n console.log(chalk`\n {bold Usage}\n {dim $} npx expo <command>\n\n {bold Commands}\n ${Object.keys({ start, install, export: _export, config, ...others }).join(', ')}\n ${Object.keys({ 'run:android': runAndroid, prebuild }).join(', ')}\n {dim ${Object.keys({ login, logout, whoami, register }).join(', ')}}\n\n {bold Options}\n --version, -v Version number\n --help, -h Usage info\n\n For more info run a command with the {bold --help} flag\n {dim $} npx expo start --help\n`);\n process.exit(0);\n}\n\nconst command = isSubcommand ? args._[0] : defaultCmd;\nconst commandArgs = isSubcommand ? args._.slice(1) : args._;\n\n// Push the help flag to the subcommand args.\nif (args['--help']) {\n commandArgs.push('--help');\n}\n\n// Install exit hooks\nprocess.on('SIGINT', () => process.exit(0));\nprocess.on('SIGTERM', () => process.exit(0));\n\ncommands[command]().then((exec) => exec(commandArgs));\n"],"names":["defaultCmd","commands","then","i","expoRunAndroid","start","expoStart","prebuild","expoPrebuild","config","expoConfig","export","expoExport","install","expoInstall","login","expoLogin","logout","expoLogout","register","expoRegister","whoami","expoWhoami","args","arg","Boolean","permissive","console","log","process","env","__EXPO_VERSION","exit","isSubcommand","_","_export","runAndroid","others","chalk","Object","keys","join","command","commandArgs","slice","push","on","exec"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport arg from 'arg';\nimport chalk from 'chalk';\nimport Debug from 'debug';\nimport { boolish } from 'getenv';\n\n// Setup before requiring `debug`.\nif (boolish('EXPO_DEBUG', false)) {\n Debug.enable('expo:*');\n} else if (Debug.enabled('expo:')) {\n process.env.EXPO_DEBUG = '1';\n}\n\nconst defaultCmd = 'start';\n\nexport type Command = (argv?: string[]) => void;\n\nconst commands: { [command: string]: () => Promise<Command> } = {\n // Add a new command here\n 'run:ios': () => import('../src/run/ios').then((i) => i.expoRunIos),\n 'run:android': () => import('../src/run/android').then((i) => i.expoRunAndroid),\n start: () => import('../src/start').then((i) => i.expoStart),\n prebuild: () => import('../src/prebuild').then((i) => i.expoPrebuild),\n config: () => import('../src/config').then((i) => i.expoConfig),\n export: () => import('../src/export').then((i) => i.expoExport),\n 'export:web': () => import('../src/export/web').then((i) => i.expoExportWeb),\n\n // Auxiliary commands\n install: () => import('../src/install').then((i) => i.expoInstall),\n customize: () => import('../src/customize').then((i) => i.expoCustomize),\n\n // Auth\n login: () => import('../src/login').then((i) => i.expoLogin),\n logout: () => import('../src/logout').then((i) => i.expoLogout),\n register: () => import('../src/register').then((i) => i.expoRegister),\n whoami: () => import('../src/whoami').then((i) => i.expoWhoami),\n};\n\nconst args = arg(\n {\n // Types\n '--version': Boolean,\n '--help': Boolean,\n\n // Aliases\n '-v': '--version',\n '-h': '--help',\n },\n {\n permissive: true,\n }\n);\n\nif (args['--version']) {\n // Version is added in the build script.\n console.log(process.env.__EXPO_VERSION);\n process.exit(0);\n}\n\n// Check if we are running `npx expo <subcommand>` or `npx expo`\nconst isSubcommand = Boolean(commands[args._[0]]);\n\n// Handle `--help` flag\nif (!isSubcommand && args['--help']) {\n const {\n login,\n logout,\n whoami,\n register,\n start,\n install,\n export: _export,\n config,\n customize,\n prebuild,\n 'run:ios': runIos,\n 'run:android': runAndroid,\n ...others\n } = commands;\n\n console.log(chalk`\n {bold Usage}\n {dim $} npx expo <command>\n\n {bold Commands}\n ${Object.keys({ start, export: _export, ...others }).join(', ')}\n ${Object.keys({ 'run:ios': runIos, 'run:android': runAndroid, prebuild }).join(', ')}\n ${Object.keys({ install, customize, config }).join(', ')}\n {dim ${Object.keys({ login, logout, whoami, register }).join(', ')}}\n\n {bold Options}\n --version, -v Version number\n --help, -h Usage info\n\n For more info run a command with the {bold --help} flag\n {dim $} npx expo start --help\n`);\n process.exit(0);\n}\n\n// NOTE(EvanBacon): Squat some directory names to help with migration,\n// users can still use folders named \"send\" or \"eject\" by using the fully qualified `npx expo start ./send`.\nif (!isSubcommand) {\n const migrationMap: Record<string, string> = {\n init: 'npx create-expo-app',\n eject: 'npx expo prebuild',\n 'start:web': 'npx expo start --web',\n 'build:ios': 'eas build -p ios',\n 'build:android': 'eas build -p android',\n 'client:install:ios': 'npx expo start --ios',\n 'client:install:android': 'npx expo start --android',\n doctor: 'expo doctor',\n upgrade: 'expo upgrade',\n 'customize:web': 'npx expo customize',\n\n publish: 'eas update',\n 'publish:set': 'eas update',\n 'publish:rollback': 'eas update',\n 'publish:history': 'eas update',\n 'publish:details': 'eas update',\n\n 'build:web': 'npx expo export',\n\n 'credentials:manager': `eas credentials`,\n 'fetch:ios:certs': `eas credentials`,\n 'fetch:android:keystore': `eas credentials`,\n 'fetch:android:hashes': `eas credentials`,\n 'fetch:android:upload-cert': `eas credentials`,\n 'push:android:upload': `eas credentials`,\n 'push:android:show': `eas credentials`,\n 'push:android:clear': `eas credentials`,\n url: `eas build:list`,\n 'url:ipa': `eas build:list`,\n 'url:apk': `eas build:list`,\n webhooks: `eas webhook`,\n 'webhooks:add': `eas webhook:create`,\n 'webhooks:remove': `eas webhook:delete`,\n 'webhooks:update': `eas webhook:update`,\n\n 'build:status': `eas build:list`,\n 'upload:android': `eas submit -p android`,\n 'upload:ios': `eas submit -p ios`,\n };\n\n const subcommand = args._[0];\n if (subcommand in migrationMap) {\n const replacement = migrationMap[subcommand];\n console.log();\n console.log(\n chalk.yellow` {gray $} {bold expo ${subcommand}} is not supported in the local CLI, please use {bold ${replacement}} instead`\n );\n console.log();\n process.exit(1);\n }\n const deprecated = ['send', 'client:ios'];\n if (deprecated.includes(subcommand)) {\n console.log();\n console.log(chalk.yellow` {gray $} {bold expo ${subcommand}} is deprecated`);\n console.log();\n process.exit(1);\n }\n}\n\nconst command = isSubcommand ? args._[0] : defaultCmd;\nconst commandArgs = isSubcommand ? args._.slice(1) : args._;\n\n// Push the help flag to the subcommand args.\nif (args['--help']) {\n commandArgs.push('--help');\n}\n\n// Install exit hooks\nprocess.on('SIGINT', () => process.exit(0));\nprocess.on('SIGTERM', () => process.exit(0));\n\ncommands[command]().then((exec) => exec(commandArgs));\n"],"names":["boolish","Debug","enable","enabled","process","env","EXPO_DEBUG","defaultCmd","commands","then","i","expoRunIos","expoRunAndroid","start","expoStart","prebuild","expoPrebuild","config","expoConfig","export","expoExport","expoExportWeb","install","expoInstall","customize","expoCustomize","login","expoLogin","logout","expoLogout","register","expoRegister","whoami","expoWhoami","args","arg","Boolean","permissive","console","log","__EXPO_VERSION","exit","isSubcommand","_","_export","runIos","runAndroid","others","chalk","Object","keys","join","migrationMap","init","eject","doctor","upgrade","publish","url","webhooks","subcommand","replacement","yellow","deprecated","includes","command","commandArgs","slice","push","on","exec"],"mappings":"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"}
|
|
@@ -3,33 +3,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
5
|
exports.wrapFetchWithOffline = wrapFetchWithOffline;
|
|
6
|
-
var Log = _interopRequireWildcard(require("../../log"));
|
|
7
6
|
var _settings = require("../settings");
|
|
8
|
-
|
|
9
|
-
if (obj && obj.__esModule) {
|
|
10
|
-
return obj;
|
|
11
|
-
} else {
|
|
12
|
-
var newObj = {};
|
|
13
|
-
if (obj != null) {
|
|
14
|
-
for(var key in obj){
|
|
15
|
-
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
16
|
-
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
17
|
-
if (desc.get || desc.set) {
|
|
18
|
-
Object.defineProperty(newObj, key, desc);
|
|
19
|
-
} else {
|
|
20
|
-
newObj[key] = obj[key];
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
newObj.default = obj;
|
|
26
|
-
return newObj;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
7
|
+
const debug = require("debug")("expo:api:fetch:offline");
|
|
29
8
|
function wrapFetchWithOffline(fetchFunction) {
|
|
30
9
|
return async function fetchWithOffline(url, options = {}) {
|
|
31
10
|
if (_settings.APISettings.isOffline) {
|
|
32
|
-
|
|
11
|
+
debug("Skipping network request: " + url);
|
|
33
12
|
options.timeout = 1;
|
|
34
13
|
}
|
|
35
14
|
return fetchFunction(url, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/api/rest/wrapFetchWithOffline.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../../src/api/rest/wrapFetchWithOffline.ts"],"sourcesContent":["import { APISettings } from '../settings';\nimport { FetchLike } from './client.types';\n\nconst debug = require('debug')('expo:api:fetch:offline') as typeof console.log;\n\n/** Wrap fetch with support for APISettings offline mode. */\nexport function wrapFetchWithOffline(fetchFunction: FetchLike): FetchLike {\n return async function fetchWithOffline(url, options = {}) {\n if (APISettings.isOffline) {\n debug('Skipping network request: ' + url);\n options.timeout = 1;\n }\n return fetchFunction(url, options);\n };\n}\n"],"names":["wrapFetchWithOffline","debug","require","fetchFunction","fetchWithOffline","url","options","APISettings","isOffline","timeout"],"mappings":"AAAA;;;;QAMgBA,oBAAoB,GAApBA,oBAAoB;AANR,IAAA,SAAa,WAAb,aAAa,CAAA;AAGzC,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,wBAAwB,CAAC,AAAsB,AAAC;AAGxE,SAASF,oBAAoB,CAACG,aAAwB,EAAa;IACxE,OAAO,eAAeC,gBAAgB,CAACC,GAAG,EAAEC,OAAO,GAAG,EAAE,EAAE;QACxD,IAAIC,SAAW,YAAA,CAACC,SAAS,EAAE;YACzBP,KAAK,CAAC,4BAA4B,GAAGI,GAAG,CAAC,CAAC;YAC1CC,OAAO,CAACG,OAAO,GAAG,CAAC,CAAC;SACrB;QACD,OAAON,aAAa,CAACE,GAAG,EAAEC,OAAO,CAAC,CAAC;KACpC,CAAC;CACH"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.customizeAsync = customizeAsync;
|
|
6
|
+
var _config = require("@expo/config");
|
|
7
|
+
var _findUp = require("../utils/findUp");
|
|
8
|
+
var _generate = require("./generate");
|
|
9
|
+
async function customizeAsync(files, options, extras) {
|
|
10
|
+
var ref;
|
|
11
|
+
// Locate the project root based on the process current working directory.
|
|
12
|
+
// This enables users to run `npx expo customize` from a subdirectory of the project.
|
|
13
|
+
const projectRoot = (0, _findUp).findUpProjectRootOrAssert(process.cwd());
|
|
14
|
+
// Get the static path (defaults to 'web/')
|
|
15
|
+
// Doesn't matter if expo is installed or which mode is used.
|
|
16
|
+
const { exp } = (0, _config).getConfig(projectRoot, {
|
|
17
|
+
skipSDKVersionRequirement: true
|
|
18
|
+
});
|
|
19
|
+
var ref1;
|
|
20
|
+
// Create the destination resolution props which are used in both
|
|
21
|
+
// the query and select functions.
|
|
22
|
+
const props = {
|
|
23
|
+
webStaticPath: (ref1 = (ref = exp.web) == null ? void 0 : ref.staticPath) != null ? ref1 : "web"
|
|
24
|
+
};
|
|
25
|
+
// If the user provided files, we'll generate them without prompting.
|
|
26
|
+
if (files.length) {
|
|
27
|
+
return (0, _generate).queryAndGenerateAsync(projectRoot, {
|
|
28
|
+
files,
|
|
29
|
+
props,
|
|
30
|
+
extras
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// Otherwise, we'll prompt the user to select which files to generate.
|
|
34
|
+
await (0, _generate).selectAndGenerateAsync(projectRoot, {
|
|
35
|
+
props,
|
|
36
|
+
extras
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=customizeAsync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/customize/customizeAsync.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\n\nimport { findUpProjectRootOrAssert } from '../utils/findUp';\nimport { queryAndGenerateAsync, selectAndGenerateAsync } from './generate';\nimport { Options } from './resolveOptions';\nimport { DestinationResolutionProps } from './templates';\n\nexport async function customizeAsync(files: string[], options: Options, extras: any[]) {\n // Locate the project root based on the process current working directory.\n // This enables users to run `npx expo customize` from a subdirectory of the project.\n const projectRoot = findUpProjectRootOrAssert(process.cwd());\n\n // Get the static path (defaults to 'web/')\n // Doesn't matter if expo is installed or which mode is used.\n const { exp } = getConfig(projectRoot, {\n skipSDKVersionRequirement: true,\n });\n\n // Create the destination resolution props which are used in both\n // the query and select functions.\n const props: DestinationResolutionProps = {\n webStaticPath: exp.web?.staticPath ?? 'web',\n };\n\n // If the user provided files, we'll generate them without prompting.\n if (files.length) {\n return queryAndGenerateAsync(projectRoot, {\n files,\n props,\n extras,\n });\n }\n\n // Otherwise, we'll prompt the user to select which files to generate.\n await selectAndGenerateAsync(projectRoot, {\n props,\n extras,\n });\n}\n"],"names":["customizeAsync","files","options","extras","exp","projectRoot","findUpProjectRootOrAssert","process","cwd","getConfig","skipSDKVersionRequirement","props","webStaticPath","web","staticPath","length","queryAndGenerateAsync","selectAndGenerateAsync"],"mappings":"AAAA;;;;QAOsBA,cAAc,GAAdA,cAAc;AAPV,IAAA,OAAc,WAAd,cAAc,CAAA;AAEE,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AACG,IAAA,SAAY,WAAZ,YAAY,CAAA;AAInE,eAAeA,cAAc,CAACC,KAAe,EAAEC,OAAgB,EAAEC,MAAa,EAAE;QAcpEC,GAAO;IAbxB,0EAA0E;IAC1E,qFAAqF;IACrF,MAAMC,WAAW,GAAGC,CAAAA,GAAAA,OAAyB,AAAe,CAAA,0BAAf,CAACC,OAAO,CAACC,GAAG,EAAE,CAAC,AAAC;IAE7D,2CAA2C;IAC3C,6DAA6D;IAC7D,MAAM,EAAEJ,GAAG,CAAA,EAAE,GAAGK,CAAAA,GAAAA,OAAS,AAEvB,CAAA,UAFuB,CAACJ,WAAW,EAAE;QACrCK,yBAAyB,EAAE,IAAI;KAChC,CAAC,AAAC;QAKcN,IAAmB;IAHpC,iEAAiE;IACjE,kCAAkC;IAClC,MAAMO,KAAK,GAA+B;QACxCC,aAAa,EAAER,CAAAA,IAAmB,GAAnBA,CAAAA,GAAO,GAAPA,GAAG,CAACS,GAAG,SAAY,GAAnBT,KAAAA,CAAmB,GAAnBA,GAAO,CAAEU,UAAU,YAAnBV,IAAmB,GAAI,KAAK;KAC5C,AAAC;IAEF,qEAAqE;IACrE,IAAIH,KAAK,CAACc,MAAM,EAAE;QAChB,OAAOC,CAAAA,GAAAA,SAAqB,AAI1B,CAAA,sBAJ0B,CAACX,WAAW,EAAE;YACxCJ,KAAK;YACLU,KAAK;YACLR,MAAM;SACP,CAAC,CAAC;KACJ;IAED,sEAAsE;IACtE,MAAMc,CAAAA,GAAAA,SAAsB,AAG1B,CAAA,uBAH0B,CAACZ,WAAW,EAAE;QACxCM,KAAK;QACLR,MAAM;KACP,CAAC,CAAC;CACJ"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.queryAndGenerateAsync = queryAndGenerateAsync;
|
|
6
|
+
exports.selectAndGenerateAsync = selectAndGenerateAsync;
|
|
7
|
+
var _path = _interopRequireDefault(require("path"));
|
|
8
|
+
var _resolveFrom = _interopRequireDefault(require("resolve-from"));
|
|
9
|
+
var _installAsync = require("../install/installAsync");
|
|
10
|
+
var _log = require("../log");
|
|
11
|
+
var _dir = require("../utils/dir");
|
|
12
|
+
var _errors = require("../utils/errors");
|
|
13
|
+
var _templates = require("./templates");
|
|
14
|
+
function _interopRequireDefault(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
async function queryAndGenerateAsync(projectRoot, { files , props , extras }) {
|
|
20
|
+
const valid = files.filter((file)=>!!_templates.TEMPLATES.find((template)=>template.destination(props) === file
|
|
21
|
+
)
|
|
22
|
+
);
|
|
23
|
+
if (valid.length !== files.length) {
|
|
24
|
+
const diff = files.filter((file)=>!_templates.TEMPLATES.find((template)=>template.destination(props) === file
|
|
25
|
+
)
|
|
26
|
+
);
|
|
27
|
+
throw new _errors.CommandError(`Invalid files: ${diff.join(", ")}. Allowed: ${_templates.TEMPLATES.map((template)=>template.destination(props)
|
|
28
|
+
).join(", ")}`);
|
|
29
|
+
}
|
|
30
|
+
if (!valid.length) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
_log.Log.log(`Generating: ${valid.join(", ")}`);
|
|
34
|
+
return generateAsync(projectRoot, {
|
|
35
|
+
answer: files.map((file)=>_templates.TEMPLATES.findIndex((template)=>template.destination(props) === file
|
|
36
|
+
)
|
|
37
|
+
),
|
|
38
|
+
props,
|
|
39
|
+
extras
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async function selectAndGenerateAsync(projectRoot, { props , extras }) {
|
|
43
|
+
const answer = await (0, _templates).selectTemplatesAsync(projectRoot, props);
|
|
44
|
+
if (!(answer == null ? void 0 : answer.length)) {
|
|
45
|
+
_log.Log.exit("\n\u203A Exiting with no change...", 0);
|
|
46
|
+
}
|
|
47
|
+
await generateAsync(projectRoot, {
|
|
48
|
+
answer,
|
|
49
|
+
props,
|
|
50
|
+
extras
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async function generateAsync(projectRoot, { answer , props , extras }) {
|
|
54
|
+
// Copy files
|
|
55
|
+
await Promise.all(answer.map((file)=>{
|
|
56
|
+
const template = _templates.TEMPLATES[file];
|
|
57
|
+
const projectFilePath = _path.default.resolve(projectRoot, template.destination(props));
|
|
58
|
+
// copy the file from template
|
|
59
|
+
return (0, _dir).copyAsync(template.file(projectRoot), projectFilePath, {
|
|
60
|
+
overwrite: true,
|
|
61
|
+
recursive: true
|
|
62
|
+
});
|
|
63
|
+
}));
|
|
64
|
+
// Install dependencies
|
|
65
|
+
const packages = answer.map((file)=>_templates.TEMPLATES[file].dependencies
|
|
66
|
+
).flat().filter((pkg)=>!_resolveFrom.default.silent(projectRoot, pkg)
|
|
67
|
+
);
|
|
68
|
+
if (packages.length) {
|
|
69
|
+
_log.Log.debug("Installing " + packages.join(", "));
|
|
70
|
+
await (0, _installAsync).installAsync(packages, {}, [
|
|
71
|
+
"--dev",
|
|
72
|
+
...extras
|
|
73
|
+
]);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/customize/generate.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { installAsync } from '../install/installAsync';\nimport { Log } from '../log';\nimport { copyAsync } from '../utils/dir';\nimport { CommandError } from '../utils/errors';\nimport { DestinationResolutionProps, selectTemplatesAsync, TEMPLATES } from './templates';\n\nexport async function queryAndGenerateAsync(\n projectRoot: string,\n {\n files,\n props,\n extras,\n }: {\n files: string[];\n props: DestinationResolutionProps;\n /** Any extra props to pass to the install command. */\n extras: any[];\n }\n) {\n const valid = files.filter(\n (file) => !!TEMPLATES.find((template) => template.destination(props) === file)\n );\n\n if (valid.length !== files.length) {\n const diff = files.filter(\n (file) => !TEMPLATES.find((template) => template.destination(props) === file)\n );\n throw new CommandError(\n `Invalid files: ${diff.join(', ')}. Allowed: ${TEMPLATES.map((template) =>\n template.destination(props)\n ).join(', ')}`\n );\n }\n\n if (!valid.length) {\n return;\n }\n Log.log(`Generating: ${valid.join(', ')}`);\n return generateAsync(projectRoot, {\n answer: files.map((file) =>\n TEMPLATES.findIndex((template) => template.destination(props) === file)\n ),\n props,\n extras,\n });\n}\n\n/** Select templates to generate then generate and install. */\nexport async function selectAndGenerateAsync(\n projectRoot: string,\n {\n props,\n extras,\n }: {\n props: DestinationResolutionProps;\n /** Any extra props to pass to the install command. */\n extras: any[];\n }\n) {\n const answer = await selectTemplatesAsync(projectRoot, props);\n\n if (!answer?.length) {\n Log.exit('\\n\\u203A Exiting with no change...', 0);\n }\n\n await generateAsync(projectRoot, {\n answer,\n props,\n extras,\n });\n}\n\nasync function generateAsync(\n projectRoot: string,\n {\n answer,\n props,\n extras,\n }: {\n answer: number[];\n props: DestinationResolutionProps;\n /** Any extra props to pass to the install command. */\n extras: any[];\n }\n) {\n // Copy files\n await Promise.all(\n answer.map((file) => {\n const template = TEMPLATES[file];\n const projectFilePath = path.resolve(projectRoot, template.destination(props));\n // copy the file from template\n return copyAsync(template.file(projectRoot), projectFilePath, {\n overwrite: true,\n recursive: true,\n });\n })\n );\n\n // Install dependencies\n const packages = answer\n .map((file) => TEMPLATES[file].dependencies)\n .flat()\n .filter((pkg) => !resolveFrom.silent(projectRoot, pkg));\n if (packages.length) {\n Log.debug('Installing ' + packages.join(', '));\n await installAsync(packages, {}, ['--dev', ...extras]);\n }\n}\n"],"names":["queryAndGenerateAsync","selectAndGenerateAsync","projectRoot","files","props","extras","valid","filter","file","TEMPLATES","find","template","destination","length","diff","CommandError","join","map","Log","log","generateAsync","answer","findIndex","selectTemplatesAsync","exit","Promise","all","projectFilePath","path","resolve","copyAsync","overwrite","recursive","packages","dependencies","flat","pkg","resolveFrom","silent","debug","installAsync"],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.expoCustomize = void 0;
|
|
7
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
8
|
+
var _args = require("../utils/args");
|
|
9
|
+
function _interopRequireDefault(obj) {
|
|
10
|
+
return obj && obj.__esModule ? obj : {
|
|
11
|
+
default: obj
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
const expoCustomize = async (argv)=>{
|
|
15
|
+
const args = (0, _args).assertWithOptionsArgs({
|
|
16
|
+
// Other options are parsed manually.
|
|
17
|
+
"--help": Boolean,
|
|
18
|
+
// Aliases
|
|
19
|
+
"-h": "--help"
|
|
20
|
+
}, {
|
|
21
|
+
argv,
|
|
22
|
+
// Allow other options, we'll throw an error if unexpected values are passed.
|
|
23
|
+
permissive: true
|
|
24
|
+
});
|
|
25
|
+
if (args["--help"]) {
|
|
26
|
+
(0, _args).printHelp(`Generate static project files`, _chalk.default`npx expo customize {dim [files...] -- [options]}`, [
|
|
27
|
+
_chalk.default`[files...] List of files to generate`,
|
|
28
|
+
_chalk.default`[options] Options to pass to the install command`,
|
|
29
|
+
`-h, --help Usage info`,
|
|
30
|
+
].join("\n"));
|
|
31
|
+
}
|
|
32
|
+
// Load modules after the help prompt so `npx expo install -h` shows as fast as possible.
|
|
33
|
+
const { customizeAsync } = require("./customizeAsync");
|
|
34
|
+
const { logCmdError } = require("../utils/errors");
|
|
35
|
+
const { resolveArgsAsync } = require("./resolveOptions");
|
|
36
|
+
const { variadic , options , extras } = await resolveArgsAsync(process.argv.slice(3)).catch(logCmdError);
|
|
37
|
+
return customizeAsync(variadic, options, extras).catch(logCmdError);
|
|
38
|
+
};
|
|
39
|
+
exports.expoCustomize = expoCustomize;
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/customize/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertWithOptionsArgs, printHelp } from '../utils/args';\n\nexport const expoCustomize: Command = async (argv) => {\n const args = assertWithOptionsArgs(\n {\n // Other options are parsed manually.\n '--help': Boolean,\n // Aliases\n '-h': '--help',\n },\n {\n argv,\n // Allow other options, we'll throw an error if unexpected values are passed.\n permissive: true,\n }\n );\n\n if (args['--help']) {\n printHelp(\n `Generate static project files`,\n chalk`npx expo customize {dim [files...] -- [options]}`,\n [\n chalk`[files...] List of files to generate`,\n chalk`[options] Options to pass to the install command`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n // Load modules after the help prompt so `npx expo install -h` shows as fast as possible.\n const { customizeAsync } = require('./customizeAsync') as typeof import('./customizeAsync');\n const { logCmdError } = require('../utils/errors') as typeof import('../utils/errors');\n const { resolveArgsAsync } = require('./resolveOptions') as typeof import('./resolveOptions');\n\n const { variadic, options, extras } = await resolveArgsAsync(process.argv.slice(3)).catch(\n logCmdError\n );\n return customizeAsync(variadic, options, extras).catch(logCmdError);\n};\n"],"names":["expoCustomize","argv","args","assertWithOptionsArgs","Boolean","permissive","printHelp","chalk","join","customizeAsync","require","logCmdError","resolveArgsAsync","variadic","options","extras","process","slice","catch"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAGwB,IAAA,KAAe,WAAf,eAAe,CAAA;;;;;;AAEzD,MAAMA,aAAa,GAAY,OAAOC,IAAI,GAAK;IACpD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAqB,AAYjC,CAAA,sBAZiC,CAChC;QACE,qCAAqC;QACrC,QAAQ,EAAEC,OAAO;QACjB,UAAU;QACV,IAAI,EAAE,QAAQ;KACf,EACD;QACEH,IAAI;QACJ,6EAA6E;QAC7EI,UAAU,EAAE,IAAI;KACjB,CACF,AAAC;IAEF,IAAIH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBI,CAAAA,GAAAA,KAAS,AAQR,CAAA,UARQ,CACP,CAAC,6BAA6B,CAAC,EAC/BC,MAAK,QAAA,CAAC,gDAAgD,CAAC,EACvD;YACEA,MAAK,QAAA,CAAC,qCAAqC,CAAC;YAC5CA,MAAK,QAAA,CAAC,kDAAkD,CAAC;YACzD,CAAC,sBAAsB,CAAC;SACzB,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,yFAAyF;IACzF,MAAM,EAAEC,cAAc,CAAA,EAAE,GAAGC,OAAO,CAAC,kBAAkB,CAAC,AAAqC,AAAC;IAC5F,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAGD,OAAO,CAAC,iBAAiB,CAAC,AAAoC,AAAC;IACvF,MAAM,EAAEE,gBAAgB,CAAA,EAAE,GAAGF,OAAO,CAAC,kBAAkB,CAAC,AAAqC,AAAC;IAE9F,MAAM,EAAEG,QAAQ,CAAA,EAAEC,OAAO,CAAA,EAAEC,MAAM,CAAA,EAAE,GAAG,MAAMH,gBAAgB,CAACI,OAAO,CAACf,IAAI,CAACgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,KAAK,CACvFP,WAAW,CACZ,AAAC;IACF,OAAOF,cAAc,CAACI,QAAQ,EAAEC,OAAO,EAAEC,MAAM,CAAC,CAACG,KAAK,CAACP,WAAW,CAAC,CAAC;CACrE,AAAC;QApCWX,aAAa,GAAbA,aAAa"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.resolveArgsAsync = resolveArgsAsync;
|
|
6
|
+
var _variadic = require("../utils/variadic");
|
|
7
|
+
async function resolveArgsAsync(argv) {
|
|
8
|
+
const { variadic , extras , flags } = (0, _variadic).parseVariadicArguments(argv);
|
|
9
|
+
(0, _variadic).assertUnexpectedObjectKeys([], flags);
|
|
10
|
+
return {
|
|
11
|
+
// Variadic arguments like `npx expo install react react-dom` -> ['react', 'react-dom']
|
|
12
|
+
variadic,
|
|
13
|
+
options: {},
|
|
14
|
+
extras
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=resolveOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/customize/resolveOptions.ts"],"sourcesContent":["import { assertUnexpectedObjectKeys, parseVariadicArguments } from '../utils/variadic';\n\nexport type Options = object;\n\nexport async function resolveArgsAsync(\n argv: string[]\n): Promise<{ variadic: string[]; options: Options; extras: string[] }> {\n const { variadic, extras, flags } = parseVariadicArguments(argv);\n\n assertUnexpectedObjectKeys([], flags);\n\n return {\n // Variadic arguments like `npx expo install react react-dom` -> ['react', 'react-dom']\n variadic,\n options: {},\n extras,\n };\n}\n"],"names":["resolveArgsAsync","argv","variadic","extras","flags","parseVariadicArguments","assertUnexpectedObjectKeys","options"],"mappings":"AAAA;;;;QAIsBA,gBAAgB,GAAhBA,gBAAgB;AAJ6B,IAAA,SAAmB,WAAnB,mBAAmB,CAAA;AAI/E,eAAeA,gBAAgB,CACpCC,IAAc,EACuD;IACrE,MAAM,EAAEC,QAAQ,CAAA,EAAEC,MAAM,CAAA,EAAEC,KAAK,CAAA,EAAE,GAAGC,CAAAA,GAAAA,SAAsB,AAAM,CAAA,uBAAN,CAACJ,IAAI,CAAC,AAAC;IAEjEK,CAAAA,GAAAA,SAA0B,AAAW,CAAA,2BAAX,CAAC,EAAE,EAAEF,KAAK,CAAC,CAAC;IAEtC,OAAO;QACL,uFAAuF;QACvFF,QAAQ;QACRK,OAAO,EAAE,EAAE;QACXJ,MAAM;KACP,CAAC;CACH"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.selectTemplatesAsync = selectTemplatesAsync;
|
|
6
|
+
exports.TEMPLATES = void 0;
|
|
7
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
8
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _resolveFrom = _interopRequireDefault(require("resolve-from"));
|
|
11
|
+
var _prompts = _interopRequireDefault(require("../utils/prompts"));
|
|
12
|
+
function _interopRequireDefault(obj) {
|
|
13
|
+
return obj && obj.__esModule ? obj : {
|
|
14
|
+
default: obj
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const debug = require("debug")("expo:customize:templates");
|
|
18
|
+
function importFromExpoWebpackConfig(projectRoot, folder, moduleId) {
|
|
19
|
+
try {
|
|
20
|
+
const filePath = (0, _resolveFrom).default(projectRoot, `@expo/webpack-config/${folder}/${moduleId}`);
|
|
21
|
+
debug(`Using @expo/webpack-config template for "${moduleId}": ${filePath}`);
|
|
22
|
+
return filePath;
|
|
23
|
+
} catch {
|
|
24
|
+
debug(`@expo/webpack-config template for "${moduleId}" not found, falling back on @expo/cli`);
|
|
25
|
+
}
|
|
26
|
+
return importFromVendor(projectRoot, moduleId);
|
|
27
|
+
}
|
|
28
|
+
function importFromVendor(projectRoot, moduleId) {
|
|
29
|
+
try {
|
|
30
|
+
const filePath = (0, _resolveFrom).default(projectRoot, "@expo/cli/static/template/" + moduleId);
|
|
31
|
+
debug(`Using @expo/cli template for "${moduleId}": ${filePath}`);
|
|
32
|
+
return filePath;
|
|
33
|
+
} catch {
|
|
34
|
+
// For dev mode, testing and other cases where @expo/cli is not installed
|
|
35
|
+
const filePath = require.resolve(`@expo/cli/static/template/${moduleId}`);
|
|
36
|
+
debug(`Local @expo/cli template for "${moduleId}" not found, falling back on template relative to @expo/cli: ${filePath}`);
|
|
37
|
+
return filePath;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const TEMPLATES = [
|
|
41
|
+
{
|
|
42
|
+
id: "babel.config.js",
|
|
43
|
+
file: (projectRoot)=>importFromVendor(projectRoot, "babel.config.js")
|
|
44
|
+
,
|
|
45
|
+
destination: ()=>"babel.config.js"
|
|
46
|
+
,
|
|
47
|
+
dependencies: [
|
|
48
|
+
// Even though this is installed in `expo`, we should add it for now.
|
|
49
|
+
"babel-preset-expo",
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "webpack.config.js",
|
|
54
|
+
file: (projectRoot)=>importFromExpoWebpackConfig(projectRoot, "template", "webpack.config.js")
|
|
55
|
+
,
|
|
56
|
+
destination: ()=>"webpack.config.js"
|
|
57
|
+
,
|
|
58
|
+
dependencies: [
|
|
59
|
+
"@expo/webpack-config"
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "metro.config.js",
|
|
64
|
+
dependencies: [
|
|
65
|
+
"@expo/metro-config"
|
|
66
|
+
],
|
|
67
|
+
destination: ()=>"metro.config.js"
|
|
68
|
+
,
|
|
69
|
+
file: (projectRoot)=>importFromVendor(projectRoot, "metro.config.js")
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: "serve.json",
|
|
73
|
+
file: (projectRoot)=>importFromExpoWebpackConfig(projectRoot, "web-default", "serve.json")
|
|
74
|
+
,
|
|
75
|
+
// web/serve.json
|
|
76
|
+
destination: ({ webStaticPath })=>webStaticPath + "/serve.json"
|
|
77
|
+
,
|
|
78
|
+
dependencies: []
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: "index.html",
|
|
82
|
+
file: (projectRoot)=>importFromExpoWebpackConfig(projectRoot, "web-default", "index.html")
|
|
83
|
+
,
|
|
84
|
+
// web/index.html
|
|
85
|
+
destination: ({ webStaticPath })=>webStaticPath + "/index.html"
|
|
86
|
+
,
|
|
87
|
+
dependencies: []
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
exports.TEMPLATES = TEMPLATES;
|
|
91
|
+
/** Generate the prompt choices. */ function createChoices(projectRoot, props) {
|
|
92
|
+
return TEMPLATES.map((template, index)=>{
|
|
93
|
+
const destination = template.destination(props);
|
|
94
|
+
const localProjectFile = _path.default.resolve(projectRoot, destination);
|
|
95
|
+
const exists = _fs.default.existsSync(localProjectFile);
|
|
96
|
+
return {
|
|
97
|
+
title: destination,
|
|
98
|
+
value: index,
|
|
99
|
+
description: exists ? _chalk.default.red("This will overwrite the existing file") : undefined
|
|
100
|
+
};
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
async function selectTemplatesAsync(projectRoot, props) {
|
|
104
|
+
const options = createChoices(projectRoot, props);
|
|
105
|
+
const { answer } = await (0, _prompts).default({
|
|
106
|
+
type: "multiselect",
|
|
107
|
+
name: "answer",
|
|
108
|
+
message: "Which files would you like to generate?",
|
|
109
|
+
hint: "- Space to select. Return to submit",
|
|
110
|
+
warn: "File already exists.",
|
|
111
|
+
limit: options.length,
|
|
112
|
+
instructions: "",
|
|
113
|
+
choices: options
|
|
114
|
+
});
|
|
115
|
+
return answer;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/customize/templates.ts"],"sourcesContent":["import chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport prompt, { ExpoChoice } from '../utils/prompts';\n\nconst debug = require('debug')('expo:customize:templates');\n\nexport type DestinationResolutionProps = {\n /** Web 'public' folder path (defaults to `/web`). This technically can be changed but shouldn't be. */\n webStaticPath: string;\n};\n\nfunction importFromExpoWebpackConfig(projectRoot: string, folder: string, moduleId: string) {\n try {\n const filePath = resolveFrom(projectRoot, `@expo/webpack-config/${folder}/${moduleId}`);\n debug(`Using @expo/webpack-config template for \"${moduleId}\": ${filePath}`);\n return filePath;\n } catch {\n debug(`@expo/webpack-config template for \"${moduleId}\" not found, falling back on @expo/cli`);\n }\n return importFromVendor(projectRoot, moduleId);\n}\n\nfunction importFromVendor(projectRoot: string, moduleId: string) {\n try {\n const filePath = resolveFrom(projectRoot, '@expo/cli/static/template/' + moduleId);\n debug(`Using @expo/cli template for \"${moduleId}\": ${filePath}`);\n return filePath;\n } catch {\n // For dev mode, testing and other cases where @expo/cli is not installed\n const filePath = require.resolve(`@expo/cli/static/template/${moduleId}`);\n debug(\n `Local @expo/cli template for \"${moduleId}\" not found, falling back on template relative to @expo/cli: ${filePath}`\n );\n\n return filePath;\n }\n}\n\nexport const TEMPLATES: {\n /** Unique ID for easily indexing. */\n id: string;\n /** Template file path to copy into the project. */\n file: (projectRoot: string) => string;\n /** Output location for the file in the user project. */\n destination: (props: DestinationResolutionProps) => string;\n /** List of dependencies to install in the project. These are used inside of the template file. */\n dependencies: string[];\n}[] = [\n {\n id: 'babel.config.js',\n file: (projectRoot) => importFromVendor(projectRoot, 'babel.config.js'),\n destination: () => 'babel.config.js',\n dependencies: [\n // Even though this is installed in `expo`, we should add it for now.\n 'babel-preset-expo',\n ],\n },\n {\n id: 'webpack.config.js',\n file: (projectRoot) =>\n importFromExpoWebpackConfig(projectRoot, 'template', 'webpack.config.js'),\n destination: () => 'webpack.config.js',\n dependencies: ['@expo/webpack-config'],\n },\n {\n id: 'metro.config.js',\n dependencies: ['@expo/metro-config'],\n destination: () => 'metro.config.js',\n file: (projectRoot) => importFromVendor(projectRoot, 'metro.config.js'),\n },\n {\n id: 'serve.json',\n file: (projectRoot) => importFromExpoWebpackConfig(projectRoot, 'web-default', 'serve.json'),\n // web/serve.json\n destination: ({ webStaticPath }) => webStaticPath + '/serve.json',\n dependencies: [],\n },\n {\n id: 'index.html',\n file: (projectRoot) => importFromExpoWebpackConfig(projectRoot, 'web-default', 'index.html'),\n // web/index.html\n destination: ({ webStaticPath }) => webStaticPath + '/index.html',\n dependencies: [],\n },\n];\n\n/** Generate the prompt choices. */\nfunction createChoices(\n projectRoot: string,\n props: DestinationResolutionProps\n): ExpoChoice<number>[] {\n return TEMPLATES.map((template, index) => {\n const destination = template.destination(props);\n const localProjectFile = path.resolve(projectRoot, destination);\n const exists = fs.existsSync(localProjectFile);\n\n return {\n title: destination,\n value: index,\n description: exists ? chalk.red('This will overwrite the existing file') : undefined,\n };\n });\n}\n\n/** Prompt to select templates to add. */\nexport async function selectTemplatesAsync(projectRoot: string, props: DestinationResolutionProps) {\n const options = createChoices(projectRoot, props);\n\n const { answer } = await prompt({\n type: 'multiselect',\n name: 'answer',\n message: 'Which files would you like to generate?',\n hint: '- Space to select. Return to submit',\n warn: 'File already exists.',\n limit: options.length,\n instructions: '',\n choices: options,\n });\n return answer;\n}\n"],"names":["selectTemplatesAsync","debug","require","importFromExpoWebpackConfig","projectRoot","folder","moduleId","filePath","resolveFrom","importFromVendor","resolve","TEMPLATES","id","file","destination","dependencies","webStaticPath","createChoices","props","map","template","index","localProjectFile","path","exists","fs","existsSync","title","value","description","chalk","red","undefined","options","answer","prompt","type","name","message","hint","warn","limit","length","instructions","choices"],"mappings":"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"}
|
|
@@ -14,22 +14,25 @@ function createMetadataJson({ bundles , fileNames }) {
|
|
|
14
14
|
return {
|
|
15
15
|
version: 0,
|
|
16
16
|
bundler: "metro",
|
|
17
|
-
fileMetadata: Object.entries(bundles).reduce((metadata, [platform, bundle])=>
|
|
17
|
+
fileMetadata: Object.entries(bundles).reduce((metadata, [platform, bundle])=>{
|
|
18
|
+
return {
|
|
18
19
|
...metadata,
|
|
19
20
|
[platform]: {
|
|
20
21
|
// Get the filename for each platform's bundle.
|
|
21
22
|
bundle: _path.default.join("bundles", fileNames[platform]),
|
|
22
23
|
// Collect all of the assets and convert them to the serial format.
|
|
23
|
-
assets: bundle.assets.map((asset)
|
|
24
|
-
asset.
|
|
24
|
+
assets: bundle.assets.map((asset)=>{
|
|
25
|
+
var // Each asset has multiple hashes which we convert and then flatten.
|
|
26
|
+
ref;
|
|
27
|
+
return (ref = asset.fileHashes) == null ? void 0 : ref.map((hash)=>({
|
|
25
28
|
path: _path.default.join("assets", hash),
|
|
26
29
|
ext: asset.type
|
|
27
30
|
})
|
|
28
|
-
)
|
|
29
|
-
).flat()
|
|
31
|
+
);
|
|
32
|
+
}).filter(Boolean).flat()
|
|
30
33
|
}
|
|
31
|
-
}
|
|
32
|
-
, {})
|
|
34
|
+
};
|
|
35
|
+
}, {})
|
|
33
36
|
};
|
|
34
37
|
}
|
|
35
38
|
|