chore(expo): remove deprecated targets and expo-cli (#16076)
This commit is contained in:
parent
3e45445e26
commit
a42cc57354
@ -4513,62 +4513,6 @@
|
|||||||
"isExternal": false,
|
"isExternal": false,
|
||||||
"disableCollapsible": false
|
"disableCollapsible": false
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "build-ios",
|
|
||||||
"path": "/packages/expo/executors/build-ios",
|
|
||||||
"name": "build-ios",
|
|
||||||
"children": [],
|
|
||||||
"isExternal": false,
|
|
||||||
"disableCollapsible": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "build-android",
|
|
||||||
"path": "/packages/expo/executors/build-android",
|
|
||||||
"name": "build-android",
|
|
||||||
"children": [],
|
|
||||||
"isExternal": false,
|
|
||||||
"disableCollapsible": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "build-web",
|
|
||||||
"path": "/packages/expo/executors/build-web",
|
|
||||||
"name": "build-web",
|
|
||||||
"children": [],
|
|
||||||
"isExternal": false,
|
|
||||||
"disableCollapsible": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "build-status",
|
|
||||||
"path": "/packages/expo/executors/build-status",
|
|
||||||
"name": "build-status",
|
|
||||||
"children": [],
|
|
||||||
"isExternal": false,
|
|
||||||
"disableCollapsible": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "publish",
|
|
||||||
"path": "/packages/expo/executors/publish",
|
|
||||||
"name": "publish",
|
|
||||||
"children": [],
|
|
||||||
"isExternal": false,
|
|
||||||
"disableCollapsible": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "publish-set",
|
|
||||||
"path": "/packages/expo/executors/publish-set",
|
|
||||||
"name": "publish-set",
|
|
||||||
"children": [],
|
|
||||||
"isExternal": false,
|
|
||||||
"disableCollapsible": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "rollback",
|
|
||||||
"path": "/packages/expo/executors/rollback",
|
|
||||||
"name": "rollback",
|
|
||||||
"children": [],
|
|
||||||
"isExternal": false,
|
|
||||||
"disableCollapsible": false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "run",
|
"id": "run",
|
||||||
"path": "/packages/expo/executors/run",
|
"path": "/packages/expo/executors/run",
|
||||||
|
|||||||
@ -737,69 +737,6 @@
|
|||||||
"path": "/packages/expo/executors/download",
|
"path": "/packages/expo/executors/download",
|
||||||
"type": "executor"
|
"type": "executor"
|
||||||
},
|
},
|
||||||
"/packages/expo/executors/build-ios": {
|
|
||||||
"description": "Build and sign a standalone IPA for the Apple App Store",
|
|
||||||
"file": "generated/packages/expo/executors/build-ios.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "build-ios",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/build-ios/schema.json",
|
|
||||||
"path": "/packages/expo/executors/build-ios",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
"/packages/expo/executors/build-android": {
|
|
||||||
"description": "Build and sign a standalone APK or App Bundle for the Google Play Store",
|
|
||||||
"file": "generated/packages/expo/executors/build-android.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "build-android",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/build-android/schema.json",
|
|
||||||
"path": "/packages/expo/executors/build-android",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
"/packages/expo/executors/build-web": {
|
|
||||||
"description": "Build the web app for production",
|
|
||||||
"file": "generated/packages/expo/executors/build-web.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "build-web",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/build-web/schema.json",
|
|
||||||
"path": "/packages/expo/executors/build-web",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
"/packages/expo/executors/build-status": {
|
|
||||||
"description": "Get the status of the latest build for the project",
|
|
||||||
"file": "generated/packages/expo/executors/build-status.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "build-status",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/build-status/schema.json",
|
|
||||||
"path": "/packages/expo/executors/build-status",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
"/packages/expo/executors/publish": {
|
|
||||||
"description": "Deploy a project to Expo hosting",
|
|
||||||
"file": "generated/packages/expo/executors/publish.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "publish",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/publish/schema.json",
|
|
||||||
"path": "/packages/expo/executors/publish",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
"/packages/expo/executors/publish-set": {
|
|
||||||
"description": "Specify the channel to serve a published release",
|
|
||||||
"file": "generated/packages/expo/executors/publish-set.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "publish-set",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/publish-set/schema.json",
|
|
||||||
"path": "/packages/expo/executors/publish-set",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
"/packages/expo/executors/rollback": {
|
|
||||||
"description": "Undo an update to a channel",
|
|
||||||
"file": "generated/packages/expo/executors/rollback.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "rollback",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/rollback/schema.json",
|
|
||||||
"path": "/packages/expo/executors/rollback",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
"/packages/expo/executors/run": {
|
"/packages/expo/executors/run": {
|
||||||
"description": "Run the Android app binary locally or run the iOS app binary locally",
|
"description": "Run the Android app binary locally or run the iOS app binary locally",
|
||||||
"file": "generated/packages/expo/executors/run.json",
|
"file": "generated/packages/expo/executors/run.json",
|
||||||
|
|||||||
@ -724,69 +724,6 @@
|
|||||||
"path": "expo/executors/download",
|
"path": "expo/executors/download",
|
||||||
"type": "executor"
|
"type": "executor"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"description": "Build and sign a standalone IPA for the Apple App Store",
|
|
||||||
"file": "generated/packages/expo/executors/build-ios.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "build-ios",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/build-ios/schema.json",
|
|
||||||
"path": "expo/executors/build-ios",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Build and sign a standalone APK or App Bundle for the Google Play Store",
|
|
||||||
"file": "generated/packages/expo/executors/build-android.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "build-android",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/build-android/schema.json",
|
|
||||||
"path": "expo/executors/build-android",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Build the web app for production",
|
|
||||||
"file": "generated/packages/expo/executors/build-web.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "build-web",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/build-web/schema.json",
|
|
||||||
"path": "expo/executors/build-web",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Get the status of the latest build for the project",
|
|
||||||
"file": "generated/packages/expo/executors/build-status.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "build-status",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/build-status/schema.json",
|
|
||||||
"path": "expo/executors/build-status",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Deploy a project to Expo hosting",
|
|
||||||
"file": "generated/packages/expo/executors/publish.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "publish",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/publish/schema.json",
|
|
||||||
"path": "expo/executors/publish",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Specify the channel to serve a published release",
|
|
||||||
"file": "generated/packages/expo/executors/publish-set.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "publish-set",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/publish-set/schema.json",
|
|
||||||
"path": "expo/executors/publish-set",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Undo an update to a channel",
|
|
||||||
"file": "generated/packages/expo/executors/rollback.json",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "rollback",
|
|
||||||
"originalFilePath": "/packages/expo/src/executors/rollback/schema.json",
|
|
||||||
"path": "expo/executors/rollback",
|
|
||||||
"type": "executor"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"description": "Run the Android app binary locally or run the iOS app binary locally",
|
"description": "Run the Android app binary locally or run the iOS app binary locally",
|
||||||
"file": "generated/packages/expo/executors/run.json",
|
"file": "generated/packages/expo/executors/run.json",
|
||||||
|
|||||||
@ -84,17 +84,6 @@
|
|||||||
"offline": {
|
"offline": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"description": "Allows this command to run while offline"
|
"description": "Allows this command to run while offline"
|
||||||
},
|
|
||||||
"sentTo": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "An email address to send a link to",
|
|
||||||
"alias": "s",
|
|
||||||
"x-deprecated": "This option will be removed in v16. It is no longer supported by @expo/cli."
|
|
||||||
},
|
|
||||||
"webpack": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Start a Webpack dev server for the web app.",
|
|
||||||
"x-deprecated": "This option will be removed in v16. It is no longer supported by @expo/cli."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"examplesFile": "`project.json`:\n\n```json\n{\n \"name\": \"mobile\",\n //...\n \"targets\": {\n //...\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081\n }\n }\n //...\n }\n}\n```\n\n```shell\nnx run mobile:start\n```\n\n## Examples\n\n{% tabs %}\n{% tab label=\"Specify starting on platform\" %}\nThe `ios`, `android` and `web` option allows you to start the server on different platforms.\n\nOpens your app in Expo Go in a currently running iOS simulator on your computer:\n\n```json\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081,\n \"ios\": true\n }\n }\n```\n\nOpens your app in Expo Go on a connected Android device\n\n```json\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081,\n \"android\": true\n }\n }\n```\n\nOpens your app in a web browser:\n\n```json\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081,\n \"web\": true\n }\n }\n```\n\n{% /tab %}\n{% tab label=\"Specify the host\" %}\nThe `host` option allows you to specify the type of host to use. `lan` uses the local network; `tunnel` ues any network by tunnel through ngrok; `localhost` connects to the dev server over localhost.\n\n```json\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081,\n \"host\": \"localhost\"\n }\n }\n```\n\n{% /tab %}\n{% tab label=\"Starts the server with cache reset\" %}\n\nThe `clear` option allows you to remove Metro bundler cache.\n\n```json\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081,\n \"clear\": true\n }\n }\n```\n\n{% /tab %}\n{% /tabs %}\n\n---\n",
|
"examplesFile": "`project.json`:\n\n```json\n{\n \"name\": \"mobile\",\n //...\n \"targets\": {\n //...\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081\n }\n }\n //...\n }\n}\n```\n\n```shell\nnx run mobile:start\n```\n\n## Examples\n\n{% tabs %}\n{% tab label=\"Specify starting on platform\" %}\nThe `ios`, `android` and `web` option allows you to start the server on different platforms.\n\nOpens your app in Expo Go in a currently running iOS simulator on your computer:\n\n```json\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081,\n \"ios\": true\n }\n }\n```\n\nOpens your app in Expo Go on a connected Android device\n\n```json\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081,\n \"android\": true\n }\n }\n```\n\nOpens your app in a web browser:\n\n```json\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081,\n \"web\": true\n }\n }\n```\n\n{% /tab %}\n{% tab label=\"Specify the host\" %}\nThe `host` option allows you to specify the type of host to use. `lan` uses the local network; `tunnel` ues any network by tunnel through ngrok; `localhost` connects to the dev server over localhost.\n\n```json\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081,\n \"host\": \"localhost\"\n }\n }\n```\n\n{% /tab %}\n{% tab label=\"Starts the server with cache reset\" %}\n\nThe `clear` option allows you to remove Metro bundler cache.\n\n```json\n \"start\": {\n \"executor\": \"@nrwl/expo:start\",\n \"options\": {\n \"port\": 8081,\n \"clear\": true\n }\n }\n```\n\n{% /tab %}\n{% /tabs %}\n\n---\n",
|
||||||
|
|||||||
@ -20,41 +20,6 @@
|
|||||||
"schema": "./src/executors/download/schema.json",
|
"schema": "./src/executors/download/schema.json",
|
||||||
"description": "Download an EAS build"
|
"description": "Download an EAS build"
|
||||||
},
|
},
|
||||||
"build-ios": {
|
|
||||||
"implementation": "./src/executors/build-ios/build-ios.impl",
|
|
||||||
"schema": "./src/executors/build-ios/schema.json",
|
|
||||||
"description": "Build and sign a standalone IPA for the Apple App Store"
|
|
||||||
},
|
|
||||||
"build-android": {
|
|
||||||
"implementation": "./src/executors/build-android/build-android.impl",
|
|
||||||
"schema": "./src/executors/build-android/schema.json",
|
|
||||||
"description": "Build and sign a standalone APK or App Bundle for the Google Play Store"
|
|
||||||
},
|
|
||||||
"build-web": {
|
|
||||||
"implementation": "./src/executors/build-web/build-web.impl",
|
|
||||||
"schema": "./src/executors/build-web/schema.json",
|
|
||||||
"description": "Build the web app for production"
|
|
||||||
},
|
|
||||||
"build-status": {
|
|
||||||
"implementation": "./src/executors/build-status/build-status.impl",
|
|
||||||
"schema": "./src/executors/build-status/schema.json",
|
|
||||||
"description": "Get the status of the latest build for the project"
|
|
||||||
},
|
|
||||||
"publish": {
|
|
||||||
"implementation": "./src/executors/publish/publish.impl",
|
|
||||||
"schema": "./src/executors/publish/schema.json",
|
|
||||||
"description": "Deploy a project to Expo hosting"
|
|
||||||
},
|
|
||||||
"publish-set": {
|
|
||||||
"implementation": "./src/executors/publish-set/publish-set.impl",
|
|
||||||
"schema": "./src/executors/publish-set/schema.json",
|
|
||||||
"description": "Specify the channel to serve a published release"
|
|
||||||
},
|
|
||||||
"rollback": {
|
|
||||||
"implementation": "./src/executors/rollback/rollback.impl",
|
|
||||||
"schema": "./src/executors/rollback/schema.json",
|
|
||||||
"description": "Undo an update to a channel"
|
|
||||||
},
|
|
||||||
"run": {
|
"run": {
|
||||||
"implementation": "./src/executors/run/run.impl",
|
"implementation": "./src/executors/run/run.impl",
|
||||||
"schema": "./src/executors/run/schema.json",
|
"schema": "./src/executors/run/schema.json",
|
||||||
@ -112,41 +77,6 @@
|
|||||||
"schema": "./src/executors/download/schema.json",
|
"schema": "./src/executors/download/schema.json",
|
||||||
"description": "Download an EAS build"
|
"description": "Download an EAS build"
|
||||||
},
|
},
|
||||||
"build-ios": {
|
|
||||||
"implementation": "./src/executors/build-ios/compat",
|
|
||||||
"schema": "./src/executors/build-ios/schema.json",
|
|
||||||
"description": "Build and sign a standalone IPA for the Apple App Store"
|
|
||||||
},
|
|
||||||
"build-android": {
|
|
||||||
"implementation": "./src/executors/build-android/compat",
|
|
||||||
"schema": "./src/executors/build-android/schema.json",
|
|
||||||
"description": "Build and sign a standalone APK or App Bundle for the Google Play Store"
|
|
||||||
},
|
|
||||||
"build-web": {
|
|
||||||
"implementation": "./src/executors/build-web/compat",
|
|
||||||
"schema": "./src/executors/build-web/schema.json",
|
|
||||||
"description": "Build the web app for production"
|
|
||||||
},
|
|
||||||
"build-status": {
|
|
||||||
"implementation": "./src/executors/build-status/compat",
|
|
||||||
"schema": "./src/executors/build-status/schema.json",
|
|
||||||
"description": "Get the status of the latest build for the project"
|
|
||||||
},
|
|
||||||
"publish": {
|
|
||||||
"implementation": "./src/executors/publish/compat",
|
|
||||||
"schema": "./src/executors/publish/schema.json",
|
|
||||||
"description": "Deploy a project to Expo hosting"
|
|
||||||
},
|
|
||||||
"publish-set": {
|
|
||||||
"implementation": "./src/executors/publish-set/compat",
|
|
||||||
"schema": "./src/executors/publish-set/schema.json",
|
|
||||||
"description": "Specify the channel to serve a published release"
|
|
||||||
},
|
|
||||||
"rollback": {
|
|
||||||
"implementation": "./src/executors/rollback/compat",
|
|
||||||
"schema": "./src/executors/rollback/schema.json",
|
|
||||||
"description": "Undo an update to a channel"
|
|
||||||
},
|
|
||||||
"run": {
|
"run": {
|
||||||
"implementation": "./src/executors/run/compat",
|
"implementation": "./src/executors/run/compat",
|
||||||
"schema": "./src/executors/run/schema.json",
|
"schema": "./src/executors/run/schema.json",
|
||||||
|
|||||||
@ -41,6 +41,12 @@
|
|||||||
"cli": "nx",
|
"cli": "nx",
|
||||||
"description": "Change webpack to metro in expo projects",
|
"description": "Change webpack to metro in expo projects",
|
||||||
"factory": "./src/migrations/update-15-8-3/change-webpack-to-metro"
|
"factory": "./src/migrations/update-15-8-3/change-webpack-to-metro"
|
||||||
|
},
|
||||||
|
"remove-deprecated-expo-targets": {
|
||||||
|
"version": "16.0.0-beta.0",
|
||||||
|
"cli": "nx",
|
||||||
|
"description": "Remove deprecated expo targets",
|
||||||
|
"factory": "./src/migrations/update-16-0-0/remove-deprecated-targets"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"packageJsonUpdates": {
|
"packageJsonUpdates": {
|
||||||
|
|||||||
@ -1,97 +0,0 @@
|
|||||||
import { ExecutorContext, logger, names } from '@nrwl/devkit';
|
|
||||||
import { join } from 'path';
|
|
||||||
import { ChildProcess, fork } from 'child_process';
|
|
||||||
|
|
||||||
import { ensureNodeModulesSymlink } from '../../utils/ensure-node-modules-symlink';
|
|
||||||
|
|
||||||
import { ExpoBuildAndroidOptions } from './schema';
|
|
||||||
import {
|
|
||||||
displayNewlyAddedDepsMessage,
|
|
||||||
syncDeps,
|
|
||||||
} from '../sync-deps/sync-deps.impl';
|
|
||||||
|
|
||||||
export interface ReactNativeBuildOutput {
|
|
||||||
success: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
let childProcess: ChildProcess;
|
|
||||||
|
|
||||||
export default async function* buildAndroidExecutor(
|
|
||||||
options: ExpoBuildAndroidOptions,
|
|
||||||
context: ExecutorContext
|
|
||||||
): AsyncGenerator<ReactNativeBuildOutput> {
|
|
||||||
logger.warn(
|
|
||||||
'@nrwl/expo:build-android is deprecated and will be removed in Nx 16. Please switch to expo:prebuild and expo:build.'
|
|
||||||
);
|
|
||||||
const projectRoot =
|
|
||||||
context.projectsConfigurations.projects[context.projectName].root;
|
|
||||||
ensureNodeModulesSymlink(context.root, projectRoot);
|
|
||||||
if (options.sync) {
|
|
||||||
displayNewlyAddedDepsMessage(
|
|
||||||
context.projectName,
|
|
||||||
await syncDeps(
|
|
||||||
context.projectName,
|
|
||||||
projectRoot,
|
|
||||||
context.root,
|
|
||||||
context.projectGraph
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
await runCliBuild(context.root, projectRoot, options);
|
|
||||||
yield { success: true };
|
|
||||||
} finally {
|
|
||||||
if (childProcess) {
|
|
||||||
childProcess.kill();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function runCliBuild(
|
|
||||||
workspaceRoot: string,
|
|
||||||
projectRoot: string,
|
|
||||||
options: ExpoBuildAndroidOptions
|
|
||||||
) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
childProcess = fork(
|
|
||||||
join(workspaceRoot, './node_modules/expo-cli/bin/expo.js'),
|
|
||||||
['build:android', ...createRunOptions(options)],
|
|
||||||
{ cwd: join(workspaceRoot, projectRoot), env: process.env }
|
|
||||||
);
|
|
||||||
|
|
||||||
// Ensure the child process is killed when the parent exits
|
|
||||||
process.on('exit', () => childProcess.kill());
|
|
||||||
process.on('SIGTERM', () => childProcess.kill());
|
|
||||||
|
|
||||||
childProcess.on('error', (err) => {
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
childProcess.on('exit', (code) => {
|
|
||||||
if (code === 0) {
|
|
||||||
resolve(code);
|
|
||||||
} else {
|
|
||||||
reject(code);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const nxOptions = ['sync'];
|
|
||||||
|
|
||||||
function createRunOptions(options: ExpoBuildAndroidOptions) {
|
|
||||||
return Object.keys(options).reduce((acc, k) => {
|
|
||||||
const v = options[k];
|
|
||||||
if (!nxOptions.includes(k)) {
|
|
||||||
if (typeof v === 'boolean') {
|
|
||||||
if (v === true) {
|
|
||||||
// when true, does not need to pass the value true, just need to pass the flag in kebob case
|
|
||||||
acc.push(`--${names(k).fileName}`);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
acc.push(`--${names(k).fileName}`, v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, []);
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
import { convertNxExecutor } from '@nrwl/devkit';
|
|
||||||
|
|
||||||
import buildAndroidExecutor from './build-android.impl';
|
|
||||||
|
|
||||||
export default convertNxExecutor(buildAndroidExecutor);
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
// options from https://docs.expo.dev/workflow/expo-cli/#expo-buildandroid
|
|
||||||
export interface ExpoBuildAndroidOptions {
|
|
||||||
clearCredentials?: boolean;
|
|
||||||
type?: 'app-bundle' | 'apk';
|
|
||||||
releaseChannel?: string;
|
|
||||||
noPublish?: boolean;
|
|
||||||
noWait?: boolean;
|
|
||||||
keystorePath?: string;
|
|
||||||
keystoreAlias?: string;
|
|
||||||
publicUrl?: string;
|
|
||||||
skipWorkflowCheck?: boolean;
|
|
||||||
sync: boolean; // default is true
|
|
||||||
}
|
|
||||||
@ -1,58 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"outputCapture": "direct-nodejs",
|
|
||||||
"$schema": "http://json-schema.org/schema",
|
|
||||||
"$id": "NxExpoBuildAndroid",
|
|
||||||
"cli": "nx",
|
|
||||||
"title": "Expo Android Build executor",
|
|
||||||
"description": "Build and sign a standalone APK or App Bundle for the Google Play Store.",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"clearCredentials": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Clear all credentials stored on Expo servers.",
|
|
||||||
"alias": "c"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"enum": ["app-bundle", "apk"],
|
|
||||||
"description": "Type of build: [app-bundle⎮apk].",
|
|
||||||
"alias": "t",
|
|
||||||
"x-priority": "important"
|
|
||||||
},
|
|
||||||
"releaseChannel": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Pull from specified release channel."
|
|
||||||
},
|
|
||||||
"noPublish": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Disable automatic publishing before building."
|
|
||||||
},
|
|
||||||
"noWait": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Exit immediately after scheduling build."
|
|
||||||
},
|
|
||||||
"keystorePath": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Path to your Keystore: *.jks."
|
|
||||||
},
|
|
||||||
"keystoreAlias": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Keystore Alias"
|
|
||||||
},
|
|
||||||
"publicUrl": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The URL of an externally hosted manifest (for self-hosted apps)."
|
|
||||||
},
|
|
||||||
"skipWorkflowCheck": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Skip warning about build service bare workflow limitations."
|
|
||||||
},
|
|
||||||
"sync": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Syncs npm dependencies to package.json (for React Native autolink).",
|
|
||||||
"default": true,
|
|
||||||
"x-priority": "internal"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": []
|
|
||||||
}
|
|
||||||
@ -1,97 +0,0 @@
|
|||||||
import { ExecutorContext, logger, names } from '@nrwl/devkit';
|
|
||||||
import { join } from 'path';
|
|
||||||
import { ChildProcess, fork } from 'child_process';
|
|
||||||
|
|
||||||
import { ensureNodeModulesSymlink } from '../../utils/ensure-node-modules-symlink';
|
|
||||||
import {
|
|
||||||
displayNewlyAddedDepsMessage,
|
|
||||||
syncDeps,
|
|
||||||
} from '../sync-deps/sync-deps.impl';
|
|
||||||
import { ExpoBuildIOSOptions } from './schema';
|
|
||||||
|
|
||||||
export interface ExpoRunOutput {
|
|
||||||
success: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
let childProcess: ChildProcess;
|
|
||||||
|
|
||||||
export default async function* buildIosExecutor(
|
|
||||||
options: ExpoBuildIOSOptions,
|
|
||||||
context: ExecutorContext
|
|
||||||
): AsyncGenerator<ExpoRunOutput> {
|
|
||||||
logger.warn(
|
|
||||||
'@nrwl/expo:build-status is deprecated and will be removed in Nx 16. Please switch to expo:prebuild and expo:build.'
|
|
||||||
);
|
|
||||||
const projectRoot =
|
|
||||||
context.projectsConfigurations.projects[context.projectName].root;
|
|
||||||
ensureNodeModulesSymlink(context.root, projectRoot);
|
|
||||||
if (options.sync) {
|
|
||||||
displayNewlyAddedDepsMessage(
|
|
||||||
context.projectName,
|
|
||||||
await syncDeps(
|
|
||||||
context.projectName,
|
|
||||||
projectRoot,
|
|
||||||
context.root,
|
|
||||||
context.projectGraph
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
await runCliBuildIOS(context.root, projectRoot, options);
|
|
||||||
|
|
||||||
yield { success: true };
|
|
||||||
} finally {
|
|
||||||
if (childProcess) {
|
|
||||||
childProcess.kill();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function runCliBuildIOS(
|
|
||||||
workspaceRoot: string,
|
|
||||||
projectRoot: string,
|
|
||||||
options: ExpoBuildIOSOptions
|
|
||||||
) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
childProcess = fork(
|
|
||||||
join(workspaceRoot, './node_modules/expo-cli/bin/expo.js'),
|
|
||||||
['build:ios', ...createRunOptions(options)],
|
|
||||||
{ cwd: join(workspaceRoot, projectRoot), env: process.env }
|
|
||||||
);
|
|
||||||
|
|
||||||
// Ensure the child process is killed when the parent exits
|
|
||||||
process.on('exit', () => childProcess.kill());
|
|
||||||
process.on('SIGTERM', () => childProcess.kill());
|
|
||||||
|
|
||||||
childProcess.on('error', (err) => {
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
childProcess.on('exit', (code) => {
|
|
||||||
if (code === 0) {
|
|
||||||
resolve(code);
|
|
||||||
} else {
|
|
||||||
reject(code);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const nxOptions = ['sync'];
|
|
||||||
|
|
||||||
function createRunOptions(options: ExpoBuildIOSOptions) {
|
|
||||||
return Object.keys(options).reduce((acc, k) => {
|
|
||||||
const v = options[k];
|
|
||||||
if (!nxOptions.includes(k)) {
|
|
||||||
if (typeof v === 'boolean') {
|
|
||||||
if (v === true) {
|
|
||||||
// when true, does not need to pass the value true, just need to pass the flag in kebob case
|
|
||||||
acc.push(`--${names(k).fileName}`);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
acc.push(`--${names(k).fileName}`, v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, []);
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
import { convertNxExecutor } from '@nrwl/devkit';
|
|
||||||
|
|
||||||
import buildIosExecutor from './build-ios.impl';
|
|
||||||
|
|
||||||
export default convertNxExecutor(buildIosExecutor);
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
// options from https://docs.expo.dev/workflow/expo-cli/#expo-buildios
|
|
||||||
export interface ExpoBuildIOSOptions {
|
|
||||||
clearCredentials?: boolean;
|
|
||||||
clearDistCert?: boolean;
|
|
||||||
clearPushKey?: boolean;
|
|
||||||
clearnPushCert?: boolean;
|
|
||||||
clearProvisioningProfile?: boolean;
|
|
||||||
revokeCredentials?: boolean;
|
|
||||||
appleId?: string;
|
|
||||||
type: 'archive' | 'simulator';
|
|
||||||
releaseChannel?: string;
|
|
||||||
noPublish?: boolean;
|
|
||||||
noWait?: boolean;
|
|
||||||
teamId?: string;
|
|
||||||
dishP12Path?: string;
|
|
||||||
pushId?: string;
|
|
||||||
pushP8Path?: string;
|
|
||||||
provisioningProfile?: string;
|
|
||||||
publicUrl?: string;
|
|
||||||
skipCredentialsCheck?: boolean;
|
|
||||||
skipWorkflowCheck?: boolean;
|
|
||||||
sync: boolean; // default is true
|
|
||||||
}
|
|
||||||
@ -1,95 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"outputCapture": "direct-nodejs",
|
|
||||||
"$schema": "http://json-schema.org/schema",
|
|
||||||
"$id": "NxExpoBuildIOS",
|
|
||||||
"cli": "nx",
|
|
||||||
"title": "Expo iOS Build executor",
|
|
||||||
"description": "Build and sign a standalone IPA for the Apple App Store.",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"clearCredentials": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Clear all credentials stored on Expo servers.",
|
|
||||||
"alias": "c"
|
|
||||||
},
|
|
||||||
"clearDistCert": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Remove Distribution Certificate stored on Expo servers."
|
|
||||||
},
|
|
||||||
"clearPushKey": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Remove Push Notifications Key stored on Expo servers."
|
|
||||||
},
|
|
||||||
"clearPushCert": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Remove Push Notifications Certificate stored on Expo servers. Use of Push Notifications Certificates is deprecated."
|
|
||||||
},
|
|
||||||
"clearProvisioningProfile": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Remove Provisioning Profile stored on Expo servers."
|
|
||||||
},
|
|
||||||
"revokeCredentials": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Revoke credentials on developer.apple.com, select appropriate using --clear-* options.",
|
|
||||||
"alias": "r"
|
|
||||||
},
|
|
||||||
"appleId": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Apple ID username (please also set the Apple ID password as EXPO_APPLE_PASSWORD environment variable)."
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"enum": ["archive", "simulator"],
|
|
||||||
"description": "Type of build: [archive⎮simulator].",
|
|
||||||
"alias": "t",
|
|
||||||
"x-priority": "important"
|
|
||||||
},
|
|
||||||
"releaseChannel": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Pull from specified release channel."
|
|
||||||
},
|
|
||||||
"noPublish": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Disable automatic publishing before building."
|
|
||||||
},
|
|
||||||
"noWait": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Exit immediately after scheduling build."
|
|
||||||
},
|
|
||||||
"teamId": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Apple Team ID."
|
|
||||||
},
|
|
||||||
"distP12Path": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Path to your Distribution Certificate P12 (set password as EXPO_IOS_DIST_P12_PASSWORD environment variable)."
|
|
||||||
},
|
|
||||||
"pushP8Path": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Path to your Push Key .p8 file."
|
|
||||||
},
|
|
||||||
"provisioningProfilePath": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Path to your Provisioning Profile."
|
|
||||||
},
|
|
||||||
"publicUrl": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The URL of an externally hosted manifest (for self-hosted apps)."
|
|
||||||
},
|
|
||||||
"skipCredentialsCheck": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Skip checking credentials."
|
|
||||||
},
|
|
||||||
"skipWorkflowCheck": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Skip warning about build service bare workflow limitations."
|
|
||||||
},
|
|
||||||
"sync": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Syncs npm dependencies to package.json (for React Native autolink).",
|
|
||||||
"default": true,
|
|
||||||
"x-priority": "internal"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": []
|
|
||||||
}
|
|
||||||
@ -1,79 +0,0 @@
|
|||||||
import { ExecutorContext, logger, names } from '@nrwl/devkit';
|
|
||||||
import { join } from 'path';
|
|
||||||
import { ChildProcess, fork } from 'child_process';
|
|
||||||
|
|
||||||
import { ensureNodeModulesSymlink } from '../../utils/ensure-node-modules-symlink';
|
|
||||||
|
|
||||||
import { ExpoBuildStatusOptions } from './schema';
|
|
||||||
|
|
||||||
export interface ReactNativeBuildOutput {
|
|
||||||
success: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
let childProcess: ChildProcess;
|
|
||||||
|
|
||||||
export default async function* buildStatusExecutor(
|
|
||||||
options: ExpoBuildStatusOptions,
|
|
||||||
context: ExecutorContext
|
|
||||||
): AsyncGenerator<ReactNativeBuildOutput> {
|
|
||||||
logger.warn(
|
|
||||||
'@nrwl/expo:build-status is deprecated and will be removed in Nx 16. Please switch to expo:build-list.'
|
|
||||||
);
|
|
||||||
|
|
||||||
const projectRoot =
|
|
||||||
context.projectsConfigurations.projects[context.projectName].root;
|
|
||||||
ensureNodeModulesSymlink(context.root, projectRoot);
|
|
||||||
|
|
||||||
try {
|
|
||||||
await runCliBuild(context.root, projectRoot, options);
|
|
||||||
yield { success: true };
|
|
||||||
} finally {
|
|
||||||
if (childProcess) {
|
|
||||||
childProcess.kill();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function runCliBuild(
|
|
||||||
workspaceRoot: string,
|
|
||||||
projectRoot: string,
|
|
||||||
options: ExpoBuildStatusOptions
|
|
||||||
) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
childProcess = fork(
|
|
||||||
join(workspaceRoot, './node_modules/expo-cli/bin/expo.js'),
|
|
||||||
['build:status', ...createRunOptions(options)],
|
|
||||||
{ cwd: join(workspaceRoot, projectRoot), env: process.env }
|
|
||||||
);
|
|
||||||
|
|
||||||
// Ensure the child process is killed when the parent exits
|
|
||||||
process.on('exit', () => childProcess.kill());
|
|
||||||
process.on('SIGTERM', () => childProcess.kill());
|
|
||||||
|
|
||||||
childProcess.on('error', (err) => {
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
childProcess.on('exit', (code) => {
|
|
||||||
if (code === 0) {
|
|
||||||
resolve(code);
|
|
||||||
} else {
|
|
||||||
reject(code);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function createRunOptions(options) {
|
|
||||||
return Object.keys(options).reduce((acc, k) => {
|
|
||||||
const v = options[k];
|
|
||||||
if (typeof v === 'boolean') {
|
|
||||||
if (v === true) {
|
|
||||||
// when true, does not need to pass the value true, just need to pass the flag in kebob case
|
|
||||||
acc.push(`--${names(k).fileName}`);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
acc.push(`--${names(k).fileName}`, v);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, []);
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
import { convertNxExecutor } from '@nrwl/devkit';
|
|
||||||
|
|
||||||
import buildStatusExecutor from './build-status.impl';
|
|
||||||
|
|
||||||
export default convertNxExecutor(buildStatusExecutor);
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
// options from https://docs.expo.dev/workflow/expo-cli/#expo-buildweb
|
|
||||||
export interface ExpoBuildStatusOptions {
|
|
||||||
publicUrl: string;
|
|
||||||
}
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"outputCapture": "direct-nodejs",
|
|
||||||
"$schema": "http://json-schema.org/schema",
|
|
||||||
"$id": "NxExpoBuildStatus",
|
|
||||||
"cli": "nx",
|
|
||||||
"title": "Expo web Build executor",
|
|
||||||
"description": "Get the status of the latest build for the project.",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"publicUrl": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The URL of an externally hosted manifest (for self-hosted apps)."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": []
|
|
||||||
}
|
|
||||||
@ -1,79 +0,0 @@
|
|||||||
import { ExecutorContext, logger, names } from '@nrwl/devkit';
|
|
||||||
import { join } from 'path';
|
|
||||||
import { ChildProcess, fork } from 'child_process';
|
|
||||||
|
|
||||||
import { ensureNodeModulesSymlink } from '../../utils/ensure-node-modules-symlink';
|
|
||||||
|
|
||||||
import { ExpoBuildWebOptions } from './schema';
|
|
||||||
|
|
||||||
export interface ReactNativeBuildOutput {
|
|
||||||
success: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
let childProcess: ChildProcess;
|
|
||||||
|
|
||||||
export default async function* buildWebExecutor(
|
|
||||||
options: ExpoBuildWebOptions,
|
|
||||||
context: ExecutorContext
|
|
||||||
): AsyncGenerator<ReactNativeBuildOutput> {
|
|
||||||
logger.warn(
|
|
||||||
'@nrwl/expo:build-web is deprecated and will be removed in Nx 16. Please switch to expo:export-web.'
|
|
||||||
);
|
|
||||||
|
|
||||||
const projectRoot =
|
|
||||||
context.projectsConfigurations.projects[context.projectName].root;
|
|
||||||
ensureNodeModulesSymlink(context.root, projectRoot);
|
|
||||||
|
|
||||||
try {
|
|
||||||
await runCliBuild(context.root, projectRoot, options);
|
|
||||||
yield { success: true };
|
|
||||||
} finally {
|
|
||||||
if (childProcess) {
|
|
||||||
childProcess.kill();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function runCliBuild(
|
|
||||||
workspaceRoot: string,
|
|
||||||
projectRoot: string,
|
|
||||||
options: ExpoBuildWebOptions
|
|
||||||
) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
childProcess = fork(
|
|
||||||
join(workspaceRoot, './node_modules/expo-cli/bin/expo.js'),
|
|
||||||
['build:web', ...createRunOptions(options)],
|
|
||||||
{ cwd: join(workspaceRoot, projectRoot), env: process.env }
|
|
||||||
);
|
|
||||||
|
|
||||||
// Ensure the child process is killed when the parent exits
|
|
||||||
process.on('exit', () => childProcess.kill());
|
|
||||||
process.on('SIGTERM', () => childProcess.kill());
|
|
||||||
|
|
||||||
childProcess.on('error', (err) => {
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
childProcess.on('exit', (code) => {
|
|
||||||
if (code === 0) {
|
|
||||||
resolve(code);
|
|
||||||
} else {
|
|
||||||
reject(code);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function createRunOptions(options) {
|
|
||||||
return Object.keys(options).reduce((acc, k) => {
|
|
||||||
const v = options[k];
|
|
||||||
if (typeof v === 'boolean') {
|
|
||||||
if (v === true) {
|
|
||||||
// when true, does not need to pass the value true, just need to pass the flag in kebob case
|
|
||||||
acc.push(`--${names(k).fileName}`);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
acc.push(`--${names(k).fileName}`, v);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, []);
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
import { convertNxExecutor } from '@nrwl/devkit';
|
|
||||||
|
|
||||||
import buildWebExecutor from './build-web.impl';
|
|
||||||
|
|
||||||
export default convertNxExecutor(buildWebExecutor);
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
// options from https://docs.expo.dev/workflow/expo-cli/#expo-buildweb
|
|
||||||
export interface ExpoBuildWebOptions {
|
|
||||||
clear?: boolean;
|
|
||||||
noPwa?: boolean;
|
|
||||||
dev?: boolean;
|
|
||||||
}
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"outputCapture": "direct-nodejs",
|
|
||||||
"$schema": "http://json-schema.org/schema",
|
|
||||||
"$id": "NxExpoBuildWeb",
|
|
||||||
"cli": "nx",
|
|
||||||
"title": "Expo web Build executor",
|
|
||||||
"description": "Build the web app for production.",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"clear": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Clear all cached build files and assets.",
|
|
||||||
"alias": "c"
|
|
||||||
},
|
|
||||||
"noPwa": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Prevent webpack from generating the manifest.json and injecting meta into the index.html head."
|
|
||||||
},
|
|
||||||
"dev": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Turns dev flag on before bundling"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": []
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
import { convertNxExecutor } from '@nrwl/devkit';
|
|
||||||
|
|
||||||
import publishSetExecutor from './publish-set.impl';
|
|
||||||
|
|
||||||
export default convertNxExecutor(publishSetExecutor);
|
|
||||||
@ -1,81 +0,0 @@
|
|||||||
import { ExecutorContext, logger, names } from '@nrwl/devkit';
|
|
||||||
import { join } from 'path';
|
|
||||||
import { ChildProcess, fork } from 'child_process';
|
|
||||||
|
|
||||||
import { ensureNodeModulesSymlink } from '../../utils/ensure-node-modules-symlink';
|
|
||||||
import { ExpoPublishSetOptions } from './schema';
|
|
||||||
|
|
||||||
export interface ExpoPublishSetOutput {
|
|
||||||
success: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
let childProcess: ChildProcess;
|
|
||||||
|
|
||||||
export default async function* publishSetExecutor(
|
|
||||||
options: ExpoPublishSetOptions,
|
|
||||||
context: ExecutorContext
|
|
||||||
): AsyncGenerator<ExpoPublishSetOutput> {
|
|
||||||
logger.warn(
|
|
||||||
'@nrwl/expo:publish-set is deprecated and will be removed in Nx 16.'
|
|
||||||
);
|
|
||||||
|
|
||||||
const projectRoot =
|
|
||||||
context.projectsConfigurations.projects[context.projectName].root;
|
|
||||||
ensureNodeModulesSymlink(context.root, projectRoot);
|
|
||||||
|
|
||||||
try {
|
|
||||||
await runCliPublishSet(context.root, projectRoot, options);
|
|
||||||
|
|
||||||
yield { success: true };
|
|
||||||
} finally {
|
|
||||||
if (childProcess) {
|
|
||||||
childProcess.kill();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function runCliPublishSet(
|
|
||||||
workspaceRoot: string,
|
|
||||||
projectRoot: string,
|
|
||||||
options: ExpoPublishSetOptions
|
|
||||||
) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
childProcess = fork(
|
|
||||||
join(workspaceRoot, './node_modules/expo-cli/bin/expo.js'),
|
|
||||||
['publish:set', ...createPublishSetOptions(options)],
|
|
||||||
{
|
|
||||||
cwd: projectRoot,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// Ensure the child process is killed when the parent exits
|
|
||||||
process.on('exit', () => childProcess.kill());
|
|
||||||
process.on('SIGTERM', () => childProcess.kill());
|
|
||||||
|
|
||||||
childProcess.on('error', (err) => {
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
childProcess.on('exit', (code) => {
|
|
||||||
if (code === 0) {
|
|
||||||
resolve(code);
|
|
||||||
} else {
|
|
||||||
reject(code);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function createPublishSetOptions(options: ExpoPublishSetOptions) {
|
|
||||||
return Object.keys(options).reduce((acc, k) => {
|
|
||||||
const v = options[k];
|
|
||||||
if (typeof v === 'boolean') {
|
|
||||||
if (v === true) {
|
|
||||||
// when true, does not need to pass the value true, just need to pass the flag in kebob case
|
|
||||||
acc.push(`--${names(k).fileName}`);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
acc.push(`--${names(k).fileName}`, v);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, []);
|
|
||||||
}
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
// options from https://docs.expo.dev/workflow/expo-cli/#expo-publishrollback
|
|
||||||
export interface ExpoPublishSetOptions {
|
|
||||||
releaseChannel: string;
|
|
||||||
sdkVersion: string;
|
|
||||||
platform?: 'ios' | 'android';
|
|
||||||
}
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"outputCapture": "direct-nodejs",
|
|
||||||
"cli": "nx",
|
|
||||||
"$id": "NxExpoPublishSet",
|
|
||||||
"$schema": "http://json-schema.org/schema",
|
|
||||||
"title": "Set Publish Channel for Expo",
|
|
||||||
"description": "Specify the channel to serve a published release.",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"releaseChannel": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The release channel to publish to."
|
|
||||||
},
|
|
||||||
"publishId": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The id of the published release to serve from the channel."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["releaseChannel", "publishId"]
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
import { convertNxExecutor } from '@nrwl/devkit';
|
|
||||||
|
|
||||||
import publishExecutor from './publish.impl';
|
|
||||||
|
|
||||||
export default convertNxExecutor(publishExecutor);
|
|
||||||
@ -1,102 +0,0 @@
|
|||||||
import { ExecutorContext, logger, names } from '@nrwl/devkit';
|
|
||||||
import { join } from 'path';
|
|
||||||
import { ChildProcess, fork } from 'child_process';
|
|
||||||
|
|
||||||
import { ensureNodeModulesSymlink } from '../../utils/ensure-node-modules-symlink';
|
|
||||||
import {
|
|
||||||
displayNewlyAddedDepsMessage,
|
|
||||||
syncDeps,
|
|
||||||
} from '../sync-deps/sync-deps.impl';
|
|
||||||
import { ExpoPublishOptions } from './schema';
|
|
||||||
|
|
||||||
export interface ExpoPublishOutput {
|
|
||||||
success: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
let childProcess: ChildProcess;
|
|
||||||
|
|
||||||
export default async function* publishExecutor(
|
|
||||||
options: ExpoPublishOptions,
|
|
||||||
context: ExecutorContext
|
|
||||||
): AsyncGenerator<ExpoPublishOutput> {
|
|
||||||
logger.warn('@nrwl/expo:publish is deprecated and will be removed in Nx 16.');
|
|
||||||
|
|
||||||
const projectRoot =
|
|
||||||
context.projectsConfigurations.projects[context.projectName].root;
|
|
||||||
ensureNodeModulesSymlink(context.root, projectRoot);
|
|
||||||
if (options.sync) {
|
|
||||||
displayNewlyAddedDepsMessage(
|
|
||||||
context.projectName,
|
|
||||||
await syncDeps(
|
|
||||||
context.projectName,
|
|
||||||
projectRoot,
|
|
||||||
context.root,
|
|
||||||
context.projectGraph
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
await runCliPublish(context.root, projectRoot, options);
|
|
||||||
|
|
||||||
yield { success: true };
|
|
||||||
} finally {
|
|
||||||
if (childProcess) {
|
|
||||||
childProcess.kill();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function runCliPublish(
|
|
||||||
workspaceRoot: string,
|
|
||||||
projectRoot: string,
|
|
||||||
options: ExpoPublishOptions
|
|
||||||
) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
childProcess = fork(
|
|
||||||
join(workspaceRoot, './node_modules/expo-cli/bin/expo.js'),
|
|
||||||
[
|
|
||||||
'publish',
|
|
||||||
join(workspaceRoot, projectRoot),
|
|
||||||
...createPublishOptions(options),
|
|
||||||
],
|
|
||||||
{
|
|
||||||
cwd: projectRoot,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// Ensure the child process is killed when the parent exits
|
|
||||||
process.on('exit', () => childProcess.kill());
|
|
||||||
process.on('SIGTERM', () => childProcess.kill());
|
|
||||||
|
|
||||||
childProcess.on('error', (err) => {
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
childProcess.on('exit', (code) => {
|
|
||||||
if (code === 0) {
|
|
||||||
resolve(code);
|
|
||||||
} else {
|
|
||||||
reject(code);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const nxOptions = ['sync'];
|
|
||||||
|
|
||||||
function createPublishOptions(options: ExpoPublishOptions) {
|
|
||||||
return Object.keys(options).reduce((acc, k) => {
|
|
||||||
const v = options[k];
|
|
||||||
if (!nxOptions.includes(k)) {
|
|
||||||
if (typeof v === 'boolean') {
|
|
||||||
if (v === true) {
|
|
||||||
// when true, does not need to pass the value true, just need to pass the flag in kebob case
|
|
||||||
acc.push(`--${names(k).fileName}`);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
acc.push(`--${names(k).fileName}`, v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, []);
|
|
||||||
}
|
|
||||||
10
packages/expo/src/executors/publish/schema.d.ts
vendored
10
packages/expo/src/executors/publish/schema.d.ts
vendored
@ -1,10 +0,0 @@
|
|||||||
// options from https://docs.expo.dev/workflow/expo-cli/#expo-publish
|
|
||||||
export interface ExpoPublishOptions {
|
|
||||||
quiet: boolean; // default is false
|
|
||||||
sendTo?: string;
|
|
||||||
clear: boolean; // default is false
|
|
||||||
target: 'managed' | 'bare';
|
|
||||||
maxWorkers?: number;
|
|
||||||
releaseChannel: string; // default is 'default'
|
|
||||||
sync: boolean; // default is true
|
|
||||||
}
|
|
||||||
@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"outputCapture": "direct-nodejs",
|
|
||||||
"cli": "nx",
|
|
||||||
"$id": "NxExpoPublish",
|
|
||||||
"$schema": "http://json-schema.org/schema",
|
|
||||||
"title": "Publish for Expo",
|
|
||||||
"description": "Deploy a project to Expo hosting.",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"quiet": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Suppress verbose output from the Metro bundler",
|
|
||||||
"default": false,
|
|
||||||
"alias": "q"
|
|
||||||
},
|
|
||||||
"sendTo": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "A phone number or email address to send a link to",
|
|
||||||
"alias": "s"
|
|
||||||
},
|
|
||||||
"clear": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Clear the Metro bundler cache",
|
|
||||||
"default": false,
|
|
||||||
"alias": "c"
|
|
||||||
},
|
|
||||||
"target": {
|
|
||||||
"enum": ["managed", "bare"],
|
|
||||||
"default": "managed",
|
|
||||||
"description": "Target environment for which this publish is intended. Options are managed or bare.",
|
|
||||||
"alias": "t",
|
|
||||||
"x-priority": "important"
|
|
||||||
},
|
|
||||||
"maxWorkers": {
|
|
||||||
"type": "number",
|
|
||||||
"description": "Maximum number of tasks to allow Metro to spawn"
|
|
||||||
},
|
|
||||||
"releaseChannel": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The release channel to publish to. Default is 'default'.",
|
|
||||||
"default": "default"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
import { convertNxExecutor } from '@nrwl/devkit';
|
|
||||||
|
|
||||||
import rollbackExecutor from './rollback.impl';
|
|
||||||
|
|
||||||
export default convertNxExecutor(rollbackExecutor);
|
|
||||||
@ -1,81 +0,0 @@
|
|||||||
import { ExecutorContext, logger, names } from '@nrwl/devkit';
|
|
||||||
import { join } from 'path';
|
|
||||||
import { ChildProcess, fork } from 'child_process';
|
|
||||||
|
|
||||||
import { ensureNodeModulesSymlink } from '../../utils/ensure-node-modules-symlink';
|
|
||||||
import { ExpoRollbackOptions } from './schema';
|
|
||||||
|
|
||||||
export interface ExpoRollbackOutput {
|
|
||||||
success: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
let childProcess: ChildProcess;
|
|
||||||
|
|
||||||
export default async function* rollbackExecutor(
|
|
||||||
options: ExpoRollbackOptions,
|
|
||||||
context: ExecutorContext
|
|
||||||
): AsyncGenerator<ExpoRollbackOutput> {
|
|
||||||
logger.warn(
|
|
||||||
'@nrwl/expo:rollback is deprecated and will be removed in Nx 16.'
|
|
||||||
);
|
|
||||||
|
|
||||||
const projectRoot =
|
|
||||||
context.projectsConfigurations.projects[context.projectName].root;
|
|
||||||
ensureNodeModulesSymlink(context.root, projectRoot);
|
|
||||||
|
|
||||||
try {
|
|
||||||
await runCliRollback(context.root, projectRoot, options);
|
|
||||||
|
|
||||||
yield { success: true };
|
|
||||||
} finally {
|
|
||||||
if (childProcess) {
|
|
||||||
childProcess.kill();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function runCliRollback(
|
|
||||||
workspaceRoot: string,
|
|
||||||
projectRoot: string,
|
|
||||||
options: ExpoRollbackOptions
|
|
||||||
) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
childProcess = fork(
|
|
||||||
join(workspaceRoot, './node_modules/expo-cli/bin/expo.js'),
|
|
||||||
['publish:rollback', ...createRollbackOptions(options)],
|
|
||||||
{
|
|
||||||
cwd: projectRoot,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// Ensure the child process is killed when the parent exits
|
|
||||||
process.on('exit', () => childProcess.kill());
|
|
||||||
process.on('SIGTERM', () => childProcess.kill());
|
|
||||||
|
|
||||||
childProcess.on('error', (err) => {
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
childProcess.on('exit', (code) => {
|
|
||||||
if (code === 0) {
|
|
||||||
resolve(code);
|
|
||||||
} else {
|
|
||||||
reject(code);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function createRollbackOptions(options: ExpoRollbackOptions) {
|
|
||||||
return Object.keys(options).reduce((acc, k) => {
|
|
||||||
const v = options[k];
|
|
||||||
if (typeof v === 'boolean') {
|
|
||||||
if (v === true) {
|
|
||||||
// when true, does not need to pass the value true, just need to pass the flag in kebob case
|
|
||||||
acc.push(`--${names(k).fileName}`);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
acc.push(`--${names(k).fileName}`, v);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, []);
|
|
||||||
}
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
// options from https://docs.expo.dev/workflow/expo-cli/#expo-publishrollback
|
|
||||||
export interface ExpoRollbackOptions {
|
|
||||||
releaseChannel: string;
|
|
||||||
sdkVersion: string;
|
|
||||||
platform?: 'ios' | 'android';
|
|
||||||
}
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"outputCapture": "direct-nodejs",
|
|
||||||
"cli": "nx",
|
|
||||||
"$id": "NxExpoRollback",
|
|
||||||
"$schema": "http://json-schema.org/schema",
|
|
||||||
"title": "Rollback Publish Command for Expo",
|
|
||||||
"description": "Undo an update to a channel.",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"releaseChannel": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The release channel to publish to."
|
|
||||||
},
|
|
||||||
"sdkVersion": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The sdk version to rollback."
|
|
||||||
},
|
|
||||||
"platform": {
|
|
||||||
"enum": ["ios", "android"],
|
|
||||||
"description": "The platform to rollback."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["releaseChannel", "sdkVersion"]
|
|
||||||
}
|
|
||||||
@ -19,12 +19,4 @@ export interface ExpoStartOptions {
|
|||||||
localhost?: boolean;
|
localhost?: boolean;
|
||||||
tunnel?: boolean;
|
tunnel?: boolean;
|
||||||
offline?: boolean;
|
offline?: boolean;
|
||||||
/**
|
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
sendTo?: string; // deprecated from @expo/cli
|
|
||||||
/**
|
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
webpack?: boolean; // deprecated from @expo/cli
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -87,17 +87,6 @@
|
|||||||
"offline": {
|
"offline": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"description": "Allows this command to run while offline"
|
"description": "Allows this command to run while offline"
|
||||||
},
|
|
||||||
"sentTo": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "An email address to send a link to",
|
|
||||||
"alias": "s",
|
|
||||||
"x-deprecated": "This option will be removed in v16. It is no longer supported by @expo/cli."
|
|
||||||
},
|
|
||||||
"webpack": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Start a Webpack dev server for the web app.",
|
|
||||||
"x-deprecated": "This option will be removed in v16. It is no longer supported by @expo/cli."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"examplesFile": "../../../docs/start-examples.md"
|
"examplesFile": "../../../docs/start-examples.md"
|
||||||
|
|||||||
@ -72,30 +72,6 @@ function getTargets(options: NormalizedSchema) {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// @deprecated, no longer supported in @expo/cli
|
|
||||||
architect['build-ios'] = {
|
|
||||||
executor: '@nrwl/expo:build-ios',
|
|
||||||
options: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
// @deprecated, no longer supported in @expo/cli
|
|
||||||
architect['build-android'] = {
|
|
||||||
executor: '@nrwl/expo:build-android',
|
|
||||||
options: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
// @deprecated, no longer supported in @expo/cli
|
|
||||||
architect['build-web'] = {
|
|
||||||
executor: '@nrwl/expo:build-web',
|
|
||||||
options: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
// @deprecated, no longer supported in @expo/cli
|
|
||||||
architect['build-status'] = {
|
|
||||||
executor: '@nrwl/expo:build-web',
|
|
||||||
options: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
architect['sync-deps'] = {
|
architect['sync-deps'] = {
|
||||||
executor: '@nrwl/expo:sync-deps',
|
executor: '@nrwl/expo:sync-deps',
|
||||||
options: {},
|
options: {},
|
||||||
@ -106,37 +82,11 @@ function getTargets(options: NormalizedSchema) {
|
|||||||
options: {},
|
options: {},
|
||||||
};
|
};
|
||||||
|
|
||||||
// @deprecated, no longer supported in @expo/cli
|
|
||||||
architect['publish'] = {
|
|
||||||
executor: '@nrwl/expo:publish',
|
|
||||||
options: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
// @deprecated, no longer supported in @expo/cli
|
|
||||||
architect['publish-set'] = {
|
|
||||||
executor: '@nrwl/expo:publish-set',
|
|
||||||
options: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
// @deprecated, no longer supported in @expo/cli
|
|
||||||
architect['rollback'] = {
|
|
||||||
executor: '@nrwl/expo:rollback',
|
|
||||||
options: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
architect['prebuild'] = {
|
architect['prebuild'] = {
|
||||||
executor: '@nrwl/expo:prebuild',
|
executor: '@nrwl/expo:prebuild',
|
||||||
options: {},
|
options: {},
|
||||||
};
|
};
|
||||||
|
|
||||||
// @deprecated, no longer supported in @expo/cli
|
|
||||||
architect['eject'] = {
|
|
||||||
executor: 'nx:run-commands',
|
|
||||||
options: {
|
|
||||||
command: `nx prebuild ${options.name}`,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
architect['install'] = {
|
architect['install'] = {
|
||||||
executor: '@nrwl/expo:install',
|
executor: '@nrwl/expo:install',
|
||||||
options: {},
|
options: {},
|
||||||
|
|||||||
@ -10,7 +10,6 @@ import {
|
|||||||
import { Schema } from './schema';
|
import { Schema } from './schema';
|
||||||
import {
|
import {
|
||||||
babelPresetExpoVersion,
|
babelPresetExpoVersion,
|
||||||
deprecatedExpoCliVersion,
|
|
||||||
easCliVersion,
|
easCliVersion,
|
||||||
expoCliVersion,
|
expoCliVersion,
|
||||||
expoMetroConfigVersion,
|
expoMetroConfigVersion,
|
||||||
@ -101,7 +100,6 @@ export function updateDependencies(host: Tree) {
|
|||||||
'react-test-renderer': reactTestRendererVersion,
|
'react-test-renderer': reactTestRendererVersion,
|
||||||
'@testing-library/react-native': testingLibraryReactNativeVersion,
|
'@testing-library/react-native': testingLibraryReactNativeVersion,
|
||||||
'@testing-library/jest-native': testingLibraryJestNativeVersion,
|
'@testing-library/jest-native': testingLibraryJestNativeVersion,
|
||||||
'expo-cli': deprecatedExpoCliVersion,
|
|
||||||
'@expo/cli': expoCliVersion,
|
'@expo/cli': expoCliVersion,
|
||||||
'eas-cli': easCliVersion,
|
'eas-cli': easCliVersion,
|
||||||
'babel-preset-expo': babelPresetExpoVersion,
|
'babel-preset-expo': babelPresetExpoVersion,
|
||||||
|
|||||||
@ -11,7 +11,6 @@ import {
|
|||||||
* - change target export-web
|
* - change target export-web
|
||||||
* - delete webpack.config.js
|
* - delete webpack.config.js
|
||||||
* - delete @expo/webpack-config dependency
|
* - delete @expo/webpack-config dependency
|
||||||
* - add target update
|
|
||||||
*/
|
*/
|
||||||
export default async function update(tree: Tree) {
|
export default async function update(tree: Tree) {
|
||||||
const projects = getProjects(tree);
|
const projects = getProjects(tree);
|
||||||
|
|||||||
@ -0,0 +1,37 @@
|
|||||||
|
import {
|
||||||
|
Tree,
|
||||||
|
formatFiles,
|
||||||
|
getProjects,
|
||||||
|
updateProjectConfiguration,
|
||||||
|
} from '@nrwl/devkit';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove deprecated @expo/cli targets
|
||||||
|
*/
|
||||||
|
export default async function update(tree: Tree) {
|
||||||
|
const projects = getProjects(tree);
|
||||||
|
|
||||||
|
for (const [name, config] of projects.entries()) {
|
||||||
|
if (config.targets?.['start']?.executor === '@nrwl/expo:start') {
|
||||||
|
const targetsToDelete = [
|
||||||
|
'build-ios',
|
||||||
|
'build-android',
|
||||||
|
'build-web',
|
||||||
|
'build-status',
|
||||||
|
'publish',
|
||||||
|
'publish-set',
|
||||||
|
'rollback',
|
||||||
|
'eject',
|
||||||
|
];
|
||||||
|
targetsToDelete.forEach((target) => {
|
||||||
|
if (config.targets[target]) {
|
||||||
|
delete config.targets[target];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
updateProjectConfiguration(tree, name, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
await formatFiles(tree);
|
||||||
|
}
|
||||||
@ -4,7 +4,6 @@ export const expoVersion = '48.0.6';
|
|||||||
export const expoMetroConfigVersion = '0.7.1';
|
export const expoMetroConfigVersion = '0.7.1';
|
||||||
export const expoSplashScreenVersion = '~0.18.1';
|
export const expoSplashScreenVersion = '~0.18.1';
|
||||||
export const expoStatusBarVersion = '~1.4.4';
|
export const expoStatusBarVersion = '~1.4.4';
|
||||||
export const deprecatedExpoCliVersion = '6.3.2'; // expo-cli
|
|
||||||
export const expoCliVersion = '0.6.2'; // @expo/cli
|
export const expoCliVersion = '0.6.2'; // @expo/cli
|
||||||
export const easCliVersion = '3.7.2';
|
export const easCliVersion = '3.7.2';
|
||||||
export const babelPresetExpoVersion = '~9.3.0';
|
export const babelPresetExpoVersion = '~9.3.0';
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user