@nx/expo 16.4.0-beta.1 → 16.4.0-beta.13
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/executors.json +10 -0
- package/migrations.json +38 -0
- package/package.json +11 -11
- package/src/executors/build/build.impl.js +14 -4
- package/src/executors/build/schema.d.ts +1 -1
- package/src/executors/build/schema.json +21 -3
- package/src/executors/download/download.impl.d.ts +1 -1
- package/src/executors/prebuild/prebuild.impl.js +1 -4
- package/src/executors/prebuild/schema.json +1 -1
- package/src/executors/run/run.impl.js +1 -8
- package/src/executors/run/schema.json +1 -1
- package/src/executors/start/schema.d.ts +3 -0
- package/src/executors/start/schema.json +5 -0
- package/src/executors/start/start.impl.js +9 -1
- package/src/executors/submit/compat.d.ts +2 -0
- package/src/executors/submit/compat.js +5 -0
- package/src/executors/submit/schema.d.ts +12 -0
- package/src/executors/submit/schema.json +57 -0
- package/src/executors/submit/submit.impl.d.ts +6 -0
- package/src/executors/submit/submit.impl.js +74 -0
- package/src/executors/update/schema.d.ts +1 -1
- package/src/executors/update/schema.json +13 -3
- package/src/executors/update/update.impl.js +10 -1
- package/src/generators/application/lib/add-project.js +4 -0
- package/src/generators/library/files/lib/tsconfig.json.template +1 -1
- package/src/migrations/update-16-0-0/add-jest-expo.js +5 -4
- package/src/migrations/update-16-0-0/remove-deprecated-targets.js +4 -3
- package/src/migrations/update-16-1-4/add-detox-app-json.js +3 -2
- package/src/migrations/update-16-1-4/update-eas-scripts.js +4 -3
- package/src/migrations/update-16-2-2/add-submit-target.d.ts +5 -0
- package/src/migrations/update-16-2-2/add-submit-target.js +26 -0
- package/src/utils/versions.d.ts +6 -5
- package/src/utils/versions.js +7 -6
package/executors.json
CHANGED
|
@@ -54,6 +54,11 @@
|
|
|
54
54
|
"implementation": "./src/executors/export/export.impl",
|
|
55
55
|
"schema": "./src/executors/export/schema.json",
|
|
56
56
|
"description": "Export the JavaScript and assets for your app using Metro/webpack bundler"
|
|
57
|
+
},
|
|
58
|
+
"submit": {
|
|
59
|
+
"implementation": "./src/executors/submit/submit.impl",
|
|
60
|
+
"schema": "./src/executors/submit/schema.json",
|
|
61
|
+
"description": "Submit app binary to App Store and/or Play Store"
|
|
57
62
|
}
|
|
58
63
|
},
|
|
59
64
|
"builders": {
|
|
@@ -111,6 +116,11 @@
|
|
|
111
116
|
"implementation": "./src/executors/export/compat",
|
|
112
117
|
"schema": "./src/executors/export/schema.json",
|
|
113
118
|
"description": "Export the JavaScript and assets for your app using Metro/webpack bundler"
|
|
119
|
+
},
|
|
120
|
+
"submit": {
|
|
121
|
+
"implementation": "./src/executors/submit/compat",
|
|
122
|
+
"schema": "./src/executors/submit/schema.json",
|
|
123
|
+
"description": "Submit app binary to App Store and/or Play Store"
|
|
114
124
|
}
|
|
115
125
|
}
|
|
116
126
|
}
|
package/migrations.json
CHANGED
|
@@ -817,6 +817,44 @@
|
|
|
817
817
|
"alwaysAddToPackageJson": false
|
|
818
818
|
}
|
|
819
819
|
}
|
|
820
|
+
},
|
|
821
|
+
"16.2.2": {
|
|
822
|
+
"version": "16.2.2-beta.0",
|
|
823
|
+
"packages": {
|
|
824
|
+
"expo": {
|
|
825
|
+
"version": "^48.0.17",
|
|
826
|
+
"alwaysAddToPackageJson": false
|
|
827
|
+
},
|
|
828
|
+
"eas-cli": {
|
|
829
|
+
"version": "~3.13.2",
|
|
830
|
+
"alwaysAddToPackageJson": false
|
|
831
|
+
},
|
|
832
|
+
"react-native": {
|
|
833
|
+
"version": "0.71.8",
|
|
834
|
+
"alwaysAddToPackageJson": false
|
|
835
|
+
},
|
|
836
|
+
"@types/react-native": {
|
|
837
|
+
"version": "0.71.7",
|
|
838
|
+
"alwaysAddToPackageJson": false
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
},
|
|
842
|
+
"16.4.0": {
|
|
843
|
+
"version": "16.4.0-beta.5",
|
|
844
|
+
"packages": {
|
|
845
|
+
"expo": {
|
|
846
|
+
"version": "^48.0.19",
|
|
847
|
+
"alwaysAddToPackageJson": false
|
|
848
|
+
},
|
|
849
|
+
"eas-cli": {
|
|
850
|
+
"version": "~3.13.3",
|
|
851
|
+
"alwaysAddToPackageJson": false
|
|
852
|
+
},
|
|
853
|
+
"@expo/cli": {
|
|
854
|
+
"version": "~0.7.3",
|
|
855
|
+
"alwaysAddToPackageJson": false
|
|
856
|
+
}
|
|
857
|
+
}
|
|
820
858
|
}
|
|
821
859
|
}
|
|
822
860
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx/expo",
|
|
3
|
-
"version": "16.4.0-beta.
|
|
3
|
+
"version": "16.4.0-beta.13",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The Expo Plugin for Nx contains executors and generators for managing and developing an expo application within your workspace. For example, you can directly build for different target platforms as well as generate projects and publish your code.",
|
|
6
6
|
"keywords": [
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
"main": "./index",
|
|
27
27
|
"types": "index.d.ts",
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@nrwl/expo": "16.4.0-beta.
|
|
30
|
-
"@nx/detox": "16.4.0-beta.
|
|
31
|
-
"@nx/devkit": "16.4.0-beta.
|
|
32
|
-
"@nx/jest": "16.4.0-beta.
|
|
33
|
-
"@nx/js": "16.4.0-beta.
|
|
34
|
-
"@nx/linter": "16.4.0-beta.
|
|
35
|
-
"@nx/react": "16.4.0-beta.
|
|
36
|
-
"@nx/webpack": "16.4.0-beta.
|
|
29
|
+
"@nrwl/expo": "16.4.0-beta.13",
|
|
30
|
+
"@nx/detox": "16.4.0-beta.13",
|
|
31
|
+
"@nx/devkit": "16.4.0-beta.13",
|
|
32
|
+
"@nx/jest": "16.4.0-beta.13",
|
|
33
|
+
"@nx/js": "16.4.0-beta.13",
|
|
34
|
+
"@nx/linter": "16.4.0-beta.13",
|
|
35
|
+
"@nx/react": "16.4.0-beta.13",
|
|
36
|
+
"@nx/webpack": "16.4.0-beta.13",
|
|
37
37
|
"chalk": "^4.1.0",
|
|
38
38
|
"enhanced-resolve": "^5.8.3",
|
|
39
39
|
"fs-extra": "^11.1.0",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"tsconfig-paths-webpack-plugin": "^4.0.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"expo": "^48.0.
|
|
47
|
+
"expo": "^48.0.19"
|
|
48
48
|
},
|
|
49
49
|
"builders": "./executors.json",
|
|
50
50
|
"ng-update": {
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"publishConfig": {
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "d81afedfcc8d07db8cdb9b0e9286de0321ee184e"
|
|
59
59
|
}
|
|
@@ -61,13 +61,23 @@ function createBuildOptions(options) {
|
|
|
61
61
|
return Object.keys(options).reduce((acc, k) => {
|
|
62
62
|
const v = options[k];
|
|
63
63
|
if (typeof v === 'boolean') {
|
|
64
|
-
if (
|
|
64
|
+
if (k === 'interactive') {
|
|
65
|
+
if (v === false) {
|
|
66
|
+
acc.push('--non-interactive'); // when is false, the flag is --non-interactive
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if (k === 'wait') {
|
|
70
|
+
if (v === false) {
|
|
71
|
+
acc.push('--no-wait'); // when is false, the flag is --no-wait
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
acc.push('--wait');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if (v === true) {
|
|
65
78
|
// when true, does not need to pass the value true, just need to pass the flag in kebob case
|
|
66
79
|
acc.push(`--${(0, devkit_1.names)(k).fileName}`);
|
|
67
80
|
}
|
|
68
|
-
if (v === false && k === 'wait') {
|
|
69
|
-
acc.push('--no-wait');
|
|
70
|
-
}
|
|
71
81
|
}
|
|
72
82
|
else {
|
|
73
83
|
acc.push(`--${(0, devkit_1.names)(k).fileName}`, v);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
export interface ExpoEasBuildOptions {
|
|
4
4
|
platform: 'ios' | 'android' | 'all';
|
|
5
5
|
profile?: string;
|
|
6
|
-
|
|
6
|
+
interactive: boolean; // default is true
|
|
7
7
|
local: boolean; // default is false
|
|
8
8
|
output?: string;
|
|
9
9
|
wait: boolean; // default is true
|
|
@@ -7,6 +7,24 @@
|
|
|
7
7
|
"title": "Expo EAS Build executor",
|
|
8
8
|
"description": "Start an EAS build for your expo project.",
|
|
9
9
|
"type": "object",
|
|
10
|
+
"presets": [
|
|
11
|
+
{
|
|
12
|
+
"name": "Build for a specific platform",
|
|
13
|
+
"keys": ["platform"]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "Build using a specific profile",
|
|
17
|
+
"keys": ["profile"]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "Run build locally",
|
|
21
|
+
"keys": ["local"]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"name": "Clear cache before the build",
|
|
25
|
+
"keys": ["clearCache"]
|
|
26
|
+
}
|
|
27
|
+
],
|
|
10
28
|
"properties": {
|
|
11
29
|
"platform": {
|
|
12
30
|
"enum": ["ios", "android", "all"],
|
|
@@ -25,10 +43,10 @@
|
|
|
25
43
|
"examples": ["production", "development", "preview"],
|
|
26
44
|
"x-priority": "important"
|
|
27
45
|
},
|
|
28
|
-
"
|
|
46
|
+
"interactive": {
|
|
29
47
|
"type": "boolean",
|
|
30
|
-
"description": "Run command in
|
|
31
|
-
"default":
|
|
48
|
+
"description": "Run command in interactive mode",
|
|
49
|
+
"default": true
|
|
32
50
|
},
|
|
33
51
|
"local": {
|
|
34
52
|
"type": "boolean",
|
|
@@ -11,5 +11,5 @@ export interface ReactNativeDownloadOutput {
|
|
|
11
11
|
export default function downloadExecutor(options: ExpoEasDownloadOptions, context: ExecutorContext): AsyncGenerator<ReactNativeDownloadOutput>;
|
|
12
12
|
export declare function getBuild(workspaceRoot: string, projectRoot: string, options: ExpoEasDownloadOptions): Promise<BuildFragment>;
|
|
13
13
|
export declare function getAppExtension(platform: string, downloadFileName: string): string;
|
|
14
|
-
export declare function unzipBuild(downloadFilePath: string, outputDirectoryPath: string):
|
|
14
|
+
export declare function unzipBuild(downloadFilePath: string, outputDirectoryPath: string): any;
|
|
15
15
|
export declare function copyBuildFile(downloadFilePath: string, outputFilePath: string): Promise<void>;
|
|
@@ -16,14 +16,11 @@ function prebuildExecutor(options, context) {
|
|
|
16
16
|
try {
|
|
17
17
|
yield tslib_1.__await(prebuildAsync(context.root, projectRoot, options));
|
|
18
18
|
if (options.install) {
|
|
19
|
-
yield tslib_1.__await((0, install_impl_1.installAsync)(context.root, {
|
|
19
|
+
yield tslib_1.__await((0, install_impl_1.installAsync)(context.root, {}));
|
|
20
20
|
if (options.platform === 'ios') {
|
|
21
21
|
yield tslib_1.__await((0, pod_install_task_1.podInstall)((0, path_1.join)(context.root, projectRoot, 'ios')));
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
else {
|
|
25
|
-
yield tslib_1.__await((0, install_impl_1.installAsync)(context.root, {}));
|
|
26
|
-
}
|
|
27
24
|
yield yield tslib_1.__await({
|
|
28
25
|
success: true,
|
|
29
26
|
});
|
|
@@ -30,18 +30,11 @@ function runExecutor(options, context) {
|
|
|
30
30
|
}));
|
|
31
31
|
}
|
|
32
32
|
if (options.install) {
|
|
33
|
-
yield tslib_1.__await((0, install_impl_1.installAsync)(context.root, {
|
|
34
|
-
fix: true,
|
|
35
|
-
}));
|
|
33
|
+
yield tslib_1.__await((0, install_impl_1.installAsync)(context.root, {}));
|
|
36
34
|
if (options.platform === 'ios') {
|
|
37
35
|
yield tslib_1.__await((0, pod_install_task_1.podInstall)((0, path_1.join)(context.root, projectRoot, 'ios')));
|
|
38
36
|
}
|
|
39
37
|
}
|
|
40
|
-
else {
|
|
41
|
-
yield tslib_1.__await((0, install_impl_1.installAsync)(context.root, {
|
|
42
|
-
check: true,
|
|
43
|
-
}));
|
|
44
|
-
}
|
|
45
38
|
try {
|
|
46
39
|
yield tslib_1.__await(runCliRun(context.root, projectRoot, options));
|
|
47
40
|
yield yield tslib_1.__await({ success: true });
|
|
@@ -87,6 +87,11 @@
|
|
|
87
87
|
"offline": {
|
|
88
88
|
"type": "boolean",
|
|
89
89
|
"description": "Allows this command to run while offline"
|
|
90
|
+
},
|
|
91
|
+
"sync": {
|
|
92
|
+
"type": "boolean",
|
|
93
|
+
"description": "Syncs npm dependencies to package.json (for React Native autolink).",
|
|
94
|
+
"default": true
|
|
90
95
|
}
|
|
91
96
|
},
|
|
92
97
|
"examplesFile": "../../../docs/start-examples.md"
|
|
@@ -6,11 +6,15 @@ const devkit_1 = require("@nx/devkit");
|
|
|
6
6
|
const child_process_1 = require("child_process");
|
|
7
7
|
const path_1 = require("path");
|
|
8
8
|
const ensure_node_modules_symlink_1 = require("../../utils/ensure-node-modules-symlink");
|
|
9
|
+
const sync_deps_impl_1 = require("../sync-deps/sync-deps.impl");
|
|
9
10
|
let childProcess;
|
|
10
11
|
function startExecutor(options, context) {
|
|
11
12
|
return tslib_1.__asyncGenerator(this, arguments, function* startExecutor_1() {
|
|
12
13
|
const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
|
|
13
14
|
(0, ensure_node_modules_symlink_1.ensureNodeModulesSymlink)(context.root, projectRoot);
|
|
15
|
+
if (options.sync) {
|
|
16
|
+
(0, sync_deps_impl_1.displayNewlyAddedDepsMessage)(context.projectName, yield tslib_1.__await((0, sync_deps_impl_1.syncDeps)(context.projectName, projectRoot, context.root, context.projectGraph)));
|
|
17
|
+
}
|
|
14
18
|
try {
|
|
15
19
|
const baseUrl = `http://localhost:${options.port}`;
|
|
16
20
|
devkit_1.logger.info(chalk.cyan(`Packager is ready at ${baseUrl}`));
|
|
@@ -48,12 +52,16 @@ function startAsync(workspaceRoot, projectRoot, options) {
|
|
|
48
52
|
});
|
|
49
53
|
}
|
|
50
54
|
// options from https://github.com/expo/expo/blob/main/packages/%40expo/cli/src/start/index.ts
|
|
55
|
+
const nxOptions = ['sync'];
|
|
51
56
|
function createStartOptions(options) {
|
|
52
57
|
return Object.keys(options).reduce((acc, k) => {
|
|
58
|
+
if (nxOptions.includes(k)) {
|
|
59
|
+
return acc;
|
|
60
|
+
}
|
|
53
61
|
const v = options[k];
|
|
54
62
|
if (k === 'dev') {
|
|
55
63
|
if (v === false) {
|
|
56
|
-
acc.push(`--no-dev`);
|
|
64
|
+
acc.push(`--no-dev`); // only no-dev flag is supported
|
|
57
65
|
}
|
|
58
66
|
}
|
|
59
67
|
else {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// command to run https://github.com/expo/eas-cli/tree/main#eas-submit
|
|
2
|
+
// options from https://github.com/expo/eas-cli/blob/main/packages/eas-cli/src/commands/submit.ts
|
|
3
|
+
export interface SubmitExecutorSchema {
|
|
4
|
+
profile?: string;
|
|
5
|
+
platform?: 'ios' | 'android' | 'all';
|
|
6
|
+
id?: string;
|
|
7
|
+
latest?: boolean;
|
|
8
|
+
interactive: boolean; // default is true
|
|
9
|
+
path?: string;
|
|
10
|
+
url?: string;
|
|
11
|
+
wait: boolean; // default is true
|
|
12
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"version": 2,
|
|
4
|
+
"title": "EXPO EAS Submit Executor",
|
|
5
|
+
"description": "Submit app binary to App Store and/or Play Store.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"presets": [
|
|
8
|
+
{
|
|
9
|
+
"name": "Submit for a specific platform",
|
|
10
|
+
"keys": ["platform"]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "Submit using a specific profile",
|
|
14
|
+
"keys": ["profile"]
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"properties": {
|
|
18
|
+
"profile": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "Name of the build profile from eas.json. Defaults to \"production\" if defined in eas.json.",
|
|
21
|
+
"examples": ["production", "development", "preview"],
|
|
22
|
+
"x-priority": "important"
|
|
23
|
+
},
|
|
24
|
+
"platform": {
|
|
25
|
+
"enum": ["ios", "android", "all"],
|
|
26
|
+
"alias": "p",
|
|
27
|
+
"description": "The platform to build the app, example values: ios, android, all.",
|
|
28
|
+
"x-priority": "important"
|
|
29
|
+
},
|
|
30
|
+
"id": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"description": "Build ID to submit"
|
|
33
|
+
},
|
|
34
|
+
"path": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"description": "Path to the .apk/.aab/.ipa file"
|
|
37
|
+
},
|
|
38
|
+
"url": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"description": "URL to the .apk/.aab/.ipa file, app archive url"
|
|
41
|
+
},
|
|
42
|
+
"latest": {
|
|
43
|
+
"type": "boolean",
|
|
44
|
+
"description": "Submit the latest build for specified platform"
|
|
45
|
+
},
|
|
46
|
+
"interactive": {
|
|
47
|
+
"type": "boolean",
|
|
48
|
+
"description": "Run command in interactive mode",
|
|
49
|
+
"default": true
|
|
50
|
+
},
|
|
51
|
+
"wait": {
|
|
52
|
+
"type": "boolean",
|
|
53
|
+
"description": "Wait for build(s) to complete",
|
|
54
|
+
"default": true
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ExecutorContext } from '@nx/devkit';
|
|
2
|
+
import { SubmitExecutorSchema } from './schema';
|
|
3
|
+
export interface ReactNativeSubmitOutput {
|
|
4
|
+
success: boolean;
|
|
5
|
+
}
|
|
6
|
+
export default function submitExecutor(options: SubmitExecutorSchema, context: ExecutorContext): AsyncGenerator<ReactNativeSubmitOutput>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const ensure_node_modules_symlink_1 = require("../../utils/ensure-node-modules-symlink");
|
|
8
|
+
let childProcess;
|
|
9
|
+
function submitExecutor(options, context) {
|
|
10
|
+
return tslib_1.__asyncGenerator(this, arguments, function* submitExecutor_1() {
|
|
11
|
+
const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
|
|
12
|
+
(0, ensure_node_modules_symlink_1.ensureNodeModulesSymlink)(context.root, projectRoot);
|
|
13
|
+
try {
|
|
14
|
+
yield tslib_1.__await(runCliSubmit(context.root, projectRoot, options));
|
|
15
|
+
yield yield tslib_1.__await({ success: true });
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
if (childProcess) {
|
|
19
|
+
childProcess.kill();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
exports.default = submitExecutor;
|
|
25
|
+
function runCliSubmit(workspaceRoot, projectRoot, options) {
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
childProcess = (0, child_process_1.fork)((0, path_1.join)(workspaceRoot, './node_modules/eas-cli/bin/run'), ['submit', ...createSubmitOptions(options)], {
|
|
28
|
+
cwd: (0, path_1.join)(workspaceRoot, projectRoot),
|
|
29
|
+
env: process.env,
|
|
30
|
+
});
|
|
31
|
+
// Ensure the child process is killed when the parent exits
|
|
32
|
+
process.on('exit', () => childProcess.kill());
|
|
33
|
+
process.on('SIGTERM', () => childProcess.kill());
|
|
34
|
+
childProcess.on('error', (err) => {
|
|
35
|
+
reject(err);
|
|
36
|
+
});
|
|
37
|
+
childProcess.on('exit', (code) => {
|
|
38
|
+
if (code === 0) {
|
|
39
|
+
resolve(code);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
reject(code);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function createSubmitOptions(options) {
|
|
48
|
+
return Object.keys(options).reduce((acc, k) => {
|
|
49
|
+
const v = options[k];
|
|
50
|
+
if (typeof v === 'boolean') {
|
|
51
|
+
if (k === 'interactive') {
|
|
52
|
+
if (v === false) {
|
|
53
|
+
acc.push('--non-interactive'); // when is false, the flag is --non-interactive
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else if (k === 'wait') {
|
|
57
|
+
if (v === false) {
|
|
58
|
+
acc.push('--no-wait'); // when is false, the flag is --no-wait
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
acc.push('--wait');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else if (v === true) {
|
|
65
|
+
// when true, does not need to pass the value true, just need to pass the flag in kebob case
|
|
66
|
+
acc.push(`--${(0, devkit_1.names)(k).fileName}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
acc.push(`--${(0, devkit_1.names)(k).fileName}`, v);
|
|
71
|
+
}
|
|
72
|
+
return acc;
|
|
73
|
+
}, []);
|
|
74
|
+
}
|
|
@@ -7,6 +7,16 @@
|
|
|
7
7
|
"title": "Expo EAS Update executor",
|
|
8
8
|
"description": "Start an EAS update for your expo project.",
|
|
9
9
|
"type": "object",
|
|
10
|
+
"presets": [
|
|
11
|
+
{
|
|
12
|
+
"name": "Update for a specific platform",
|
|
13
|
+
"keys": ["platform"]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "Update from a specific branch",
|
|
17
|
+
"keys": ["branch"]
|
|
18
|
+
}
|
|
19
|
+
],
|
|
10
20
|
"properties": {
|
|
11
21
|
"branch": {
|
|
12
22
|
"type": "string",
|
|
@@ -55,10 +65,10 @@
|
|
|
55
65
|
"type": "string",
|
|
56
66
|
"description": "File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named \"private-key.pem\" in the certificate's directory."
|
|
57
67
|
},
|
|
58
|
-
"
|
|
68
|
+
"interactive": {
|
|
59
69
|
"type": "boolean",
|
|
60
|
-
"description": "Run command in
|
|
61
|
-
"default":
|
|
70
|
+
"description": "Run command in interactive mode",
|
|
71
|
+
"default": true
|
|
62
72
|
}
|
|
63
73
|
},
|
|
64
74
|
"required": []
|
|
@@ -5,10 +5,14 @@ const devkit_1 = require("@nx/devkit");
|
|
|
5
5
|
const path_1 = require("path");
|
|
6
6
|
const child_process_1 = require("child_process");
|
|
7
7
|
const ensure_node_modules_symlink_1 = require("../../utils/ensure-node-modules-symlink");
|
|
8
|
+
const sync_deps_impl_1 = require("../sync-deps/sync-deps.impl");
|
|
9
|
+
const install_impl_1 = require("../install/install.impl");
|
|
8
10
|
let childProcess;
|
|
9
11
|
function buildExecutor(options, context) {
|
|
10
12
|
return tslib_1.__asyncGenerator(this, arguments, function* buildExecutor_1() {
|
|
11
13
|
const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
|
|
14
|
+
yield tslib_1.__await((0, install_impl_1.installAsync)(context.root, { packages: ['expo-updates'] }));
|
|
15
|
+
(0, sync_deps_impl_1.displayNewlyAddedDepsMessage)(context.projectName, yield tslib_1.__await((0, sync_deps_impl_1.syncDeps)(context.projectName, projectRoot, context.root, context.projectGraph, ['expo-updates'])));
|
|
12
16
|
(0, ensure_node_modules_symlink_1.ensureNodeModulesSymlink)(context.root, projectRoot);
|
|
13
17
|
try {
|
|
14
18
|
yield tslib_1.__await(runCliUpdate(context.root, projectRoot, options));
|
|
@@ -45,7 +49,12 @@ function createUpdateOptions(options) {
|
|
|
45
49
|
return Object.keys(options).reduce((acc, k) => {
|
|
46
50
|
const v = options[k];
|
|
47
51
|
if (typeof v === 'boolean') {
|
|
48
|
-
if (
|
|
52
|
+
if (k === 'interactive') {
|
|
53
|
+
if (v === false) {
|
|
54
|
+
acc.push('--non-interactive');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (v === true) {
|
|
49
58
|
// when true, does not need to pass the value true, just need to pass the flag in kebob case
|
|
50
59
|
acc.push(`--${(0, devkit_1.names)(k).fileName}`);
|
|
51
60
|
}
|
|
@@ -8,19 +8,20 @@ const jest_1 = require("@nx/jest");
|
|
|
8
8
|
* - changes preset of jest.config to jest-expo
|
|
9
9
|
*/
|
|
10
10
|
function update(tree) {
|
|
11
|
-
var _a, _b, _c, _d, _e;
|
|
11
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
12
12
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
13
13
|
const projects = (0, devkit_1.getProjects)(tree);
|
|
14
14
|
for (const [name, config] of projects.entries()) {
|
|
15
|
-
if (((_b = (_a = config.targets) === null || _a === void 0 ? void 0 : _a['start']) === null || _b === void 0 ? void 0 : _b.executor) === '@nrwl/expo:start'
|
|
16
|
-
|
|
15
|
+
if (((_b = (_a = config.targets) === null || _a === void 0 ? void 0 : _a['start']) === null || _b === void 0 ? void 0 : _b.executor) === '@nrwl/expo:start' ||
|
|
16
|
+
((_d = (_c = config.targets) === null || _c === void 0 ? void 0 : _c['start']) === null || _d === void 0 ? void 0 : _d.executor) === '@nx/expo:start') {
|
|
17
|
+
const jestConfigPath = (_g = (_f = (_e = config.targets) === null || _e === void 0 ? void 0 : _e.test) === null || _f === void 0 ? void 0 : _f.options) === null || _g === void 0 ? void 0 : _g.jestConfig;
|
|
17
18
|
if (!jestConfigPath || !tree.exists(jestConfigPath))
|
|
18
19
|
return;
|
|
19
20
|
try {
|
|
20
21
|
(0, jest_1.removePropertyFromJestConfig)(tree, jestConfigPath, 'preset');
|
|
21
22
|
(0, jest_1.addPropertyToJestConfig)(tree, jestConfigPath, 'preset', 'jest-expo');
|
|
22
23
|
}
|
|
23
|
-
catch (
|
|
24
|
+
catch (_h) {
|
|
24
25
|
devkit_1.logger.error((0, devkit_1.stripIndents) `Unable to update ${jestConfigPath} for project ${name}.`);
|
|
25
26
|
}
|
|
26
27
|
}
|
|
@@ -6,11 +6,12 @@ const devkit_1 = require("@nx/devkit");
|
|
|
6
6
|
* Remove deprecated @expo/cli targets
|
|
7
7
|
*/
|
|
8
8
|
function update(tree) {
|
|
9
|
-
var _a, _b;
|
|
9
|
+
var _a, _b, _c, _d;
|
|
10
10
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
11
11
|
const projects = (0, devkit_1.getProjects)(tree);
|
|
12
12
|
for (const [name, config] of projects.entries()) {
|
|
13
|
-
if (((_b = (_a = config.targets) === null || _a === void 0 ? void 0 : _a['start']) === null || _b === void 0 ? void 0 : _b.executor) === '@nrwl/expo:start'
|
|
13
|
+
if (((_b = (_a = config.targets) === null || _a === void 0 ? void 0 : _a['start']) === null || _b === void 0 ? void 0 : _b.executor) === '@nrwl/expo:start' ||
|
|
14
|
+
((_d = (_c = config.targets) === null || _c === void 0 ? void 0 : _c['start']) === null || _d === void 0 ? void 0 : _d.executor) === '@nx/expo:start') {
|
|
14
15
|
const targetsToDelete = [
|
|
15
16
|
'build-ios',
|
|
16
17
|
'build-android',
|
|
@@ -26,8 +27,8 @@ function update(tree) {
|
|
|
26
27
|
delete config.targets[target];
|
|
27
28
|
}
|
|
28
29
|
});
|
|
30
|
+
(0, devkit_1.updateProjectConfiguration)(tree, name, config);
|
|
29
31
|
}
|
|
30
|
-
(0, devkit_1.updateProjectConfiguration)(tree, name, config);
|
|
31
32
|
}
|
|
32
33
|
yield (0, devkit_1.formatFiles)(tree);
|
|
33
34
|
});
|
|
@@ -9,8 +9,9 @@ function update(tree) {
|
|
|
9
9
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
10
10
|
const projects = (0, devkit_1.getProjects)(tree);
|
|
11
11
|
projects.forEach((config) => {
|
|
12
|
-
var _a, _b;
|
|
13
|
-
if (((_b = (_a = config.targets) === null || _a === void 0 ? void 0 : _a['start']) === null || _b === void 0 ? void 0 : _b.executor) === '@nrwl/expo:start'
|
|
12
|
+
var _a, _b, _c, _d;
|
|
13
|
+
if (((_b = (_a = config.targets) === null || _a === void 0 ? void 0 : _a['start']) === null || _b === void 0 ? void 0 : _b.executor) === '@nrwl/expo:start' ||
|
|
14
|
+
((_d = (_c = config.targets) === null || _c === void 0 ? void 0 : _c['start']) === null || _d === void 0 ? void 0 : _d.executor) === '@nx/expo:start') {
|
|
14
15
|
(0, devkit_1.updateJson)(tree, `${config.root}/app.json`, (json) => {
|
|
15
16
|
if (!json.expo.plugins) {
|
|
16
17
|
json.expo.plugins = [];
|
|
@@ -7,7 +7,7 @@ const path_1 = require("path");
|
|
|
7
7
|
* Update app's package.json to use eas-build-pre-install and eas-build-post-install scripts.
|
|
8
8
|
*/
|
|
9
9
|
function update(tree) {
|
|
10
|
-
var _a, _b;
|
|
10
|
+
var _a, _b, _c, _d;
|
|
11
11
|
const projects = (0, devkit_1.getProjects)(tree);
|
|
12
12
|
const packageManagerLockFile = {
|
|
13
13
|
npm: 'package-lock.json',
|
|
@@ -15,7 +15,8 @@ function update(tree) {
|
|
|
15
15
|
pnpm: 'pnpm-lock.yaml',
|
|
16
16
|
};
|
|
17
17
|
for (const [name, config] of projects.entries()) {
|
|
18
|
-
if (((_b = (_a = config.targets) === null || _a === void 0 ? void 0 : _a['start']) === null || _b === void 0 ? void 0 : _b.executor) === '@nrwl/expo:start'
|
|
18
|
+
if (((_b = (_a = config.targets) === null || _a === void 0 ? void 0 : _a['start']) === null || _b === void 0 ? void 0 : _b.executor) === '@nrwl/expo:start' ||
|
|
19
|
+
((_d = (_c = config.targets) === null || _c === void 0 ? void 0 : _c['start']) === null || _d === void 0 ? void 0 : _d.executor) === '@nx/expo:start') {
|
|
19
20
|
try {
|
|
20
21
|
(0, add_eas_scripts_1.addEasScripts)(tree);
|
|
21
22
|
(0, devkit_1.updateJson)(tree, (0, path_1.join)(config.root, 'package.json'), (packageJson) => {
|
|
@@ -30,7 +31,7 @@ function update(tree) {
|
|
|
30
31
|
return packageJson;
|
|
31
32
|
});
|
|
32
33
|
}
|
|
33
|
-
catch (
|
|
34
|
+
catch (_e) {
|
|
34
35
|
devkit_1.logger.error(`Unable to update package.json for project ${name}.`);
|
|
35
36
|
}
|
|
36
37
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
/**
|
|
6
|
+
* Add new submit target
|
|
7
|
+
*/
|
|
8
|
+
function update(tree) {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
11
|
+
const projects = (0, devkit_1.getProjects)(tree);
|
|
12
|
+
for (const [name, config] of projects.entries()) {
|
|
13
|
+
if (((_b = (_a = config.targets) === null || _a === void 0 ? void 0 : _a['start']) === null || _b === void 0 ? void 0 : _b.executor) === '@nx/expo:start') {
|
|
14
|
+
if (!config.targets['submit']) {
|
|
15
|
+
config.targets['submit'] = {
|
|
16
|
+
executor: '@nx/expo:submit',
|
|
17
|
+
options: {},
|
|
18
|
+
};
|
|
19
|
+
(0, devkit_1.updateProjectConfiguration)(tree, name, config);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
yield (0, devkit_1.formatFiles)(tree);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
exports.default = update;
|
package/src/utils/versions.d.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
export declare const nxVersion: any;
|
|
2
|
-
export declare const expoVersion = "48.0.
|
|
2
|
+
export declare const expoVersion = "48.0.19";
|
|
3
3
|
export declare const expoMetroConfigVersion = "0.7.1";
|
|
4
4
|
export declare const expoSplashScreenVersion = "~0.18.2";
|
|
5
5
|
export declare const expoStatusBarVersion = "~1.4.4";
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
6
|
+
export declare const expoUpdatesVersion = "~0.16.4";
|
|
7
|
+
export declare const expoCliVersion = "~0.7.3";
|
|
8
|
+
export declare const easCliVersion = "~3.13.3";
|
|
8
9
|
export declare const babelPresetExpoVersion = "~9.3.2";
|
|
9
10
|
export declare const reactVersion = "18.2.0";
|
|
10
11
|
export declare const reactDomVersion = "18.2.0";
|
|
11
12
|
export declare const reactTestRendererVersion = "18.2.0";
|
|
12
13
|
export declare const typesReactVersion = "18.0.28";
|
|
13
|
-
export declare const reactNativeVersion = "0.71.
|
|
14
|
-
export declare const typesReactNativeVersion = "0.71.
|
|
14
|
+
export declare const reactNativeVersion = "0.71.8";
|
|
15
|
+
export declare const typesReactNativeVersion = "0.71.7";
|
|
15
16
|
export declare const reactNativeWebVersion = "~0.18.12";
|
|
16
17
|
export declare const reactNativeSvgTransformerVersion = "1.0.0";
|
|
17
18
|
export declare const reactNativeSvgVersion = "13.4.0";
|
package/src/utils/versions.js
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.jestExpoVersion = exports.testingLibraryJestNativeVersion = exports.testingLibraryReactNativeVersion = exports.metroVersion = exports.reactNativeSvgVersion = exports.reactNativeSvgTransformerVersion = exports.reactNativeWebVersion = exports.typesReactNativeVersion = exports.reactNativeVersion = exports.typesReactVersion = exports.reactTestRendererVersion = exports.reactDomVersion = exports.reactVersion = exports.babelPresetExpoVersion = exports.easCliVersion = exports.expoCliVersion = exports.expoStatusBarVersion = exports.expoSplashScreenVersion = exports.expoMetroConfigVersion = exports.expoVersion = exports.nxVersion = void 0;
|
|
3
|
+
exports.jestExpoVersion = exports.testingLibraryJestNativeVersion = exports.testingLibraryReactNativeVersion = exports.metroVersion = exports.reactNativeSvgVersion = exports.reactNativeSvgTransformerVersion = exports.reactNativeWebVersion = exports.typesReactNativeVersion = exports.reactNativeVersion = exports.typesReactVersion = exports.reactTestRendererVersion = exports.reactDomVersion = exports.reactVersion = exports.babelPresetExpoVersion = exports.easCliVersion = exports.expoCliVersion = exports.expoUpdatesVersion = exports.expoStatusBarVersion = exports.expoSplashScreenVersion = exports.expoMetroConfigVersion = exports.expoVersion = exports.nxVersion = void 0;
|
|
4
4
|
exports.nxVersion = require('../../package.json').version;
|
|
5
|
-
exports.expoVersion = '48.0.
|
|
5
|
+
exports.expoVersion = '48.0.19';
|
|
6
6
|
exports.expoMetroConfigVersion = '0.7.1';
|
|
7
7
|
exports.expoSplashScreenVersion = '~0.18.2';
|
|
8
8
|
exports.expoStatusBarVersion = '~1.4.4';
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
9
|
+
exports.expoUpdatesVersion = '~0.16.4';
|
|
10
|
+
exports.expoCliVersion = '~0.7.3'; // @expo/cli
|
|
11
|
+
exports.easCliVersion = '~3.13.3';
|
|
11
12
|
exports.babelPresetExpoVersion = '~9.3.2';
|
|
12
13
|
exports.reactVersion = '18.2.0';
|
|
13
14
|
exports.reactDomVersion = '18.2.0';
|
|
14
15
|
exports.reactTestRendererVersion = '18.2.0';
|
|
15
16
|
exports.typesReactVersion = '18.0.28';
|
|
16
|
-
exports.reactNativeVersion = '0.71.
|
|
17
|
-
exports.typesReactNativeVersion = '0.71.
|
|
17
|
+
exports.reactNativeVersion = '0.71.8';
|
|
18
|
+
exports.typesReactNativeVersion = '0.71.7';
|
|
18
19
|
exports.reactNativeWebVersion = '~0.18.12';
|
|
19
20
|
exports.reactNativeSvgTransformerVersion = '1.0.0';
|
|
20
21
|
exports.reactNativeSvgVersion = '13.4.0';
|