UNPKG

@nx/expo

Version:

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.

74 lines (73 loc) 3.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.expoInitGenerator = expoInitGenerator; exports.expoInitGeneratorInternal = expoInitGeneratorInternal; exports.updateDependencies = updateDependencies; const devkit_1 = require("@nx/devkit"); const add_plugin_1 = require("@nx/devkit/src/utils/add-plugin"); const plugin_1 = require("../../../plugins/plugin"); const versions_1 = require("../../utils/versions"); const add_git_ignore_entry_1 = require("./lib/add-git-ignore-entry"); function expoInitGenerator(tree, schema) { return expoInitGeneratorInternal(tree, { addPlugin: false, ...schema }); } async function expoInitGeneratorInternal(host, schema) { const nxJson = (0, devkit_1.readNxJson)(host); const addPluginDefault = process.env.NX_ADD_PLUGINS !== 'false' && nxJson.useInferencePlugins !== false; schema.addPlugin ??= addPluginDefault; (0, add_git_ignore_entry_1.addGitIgnoreEntry)(host); if (schema.addPlugin) { await (0, add_plugin_1.addPlugin)(host, await (0, devkit_1.createProjectGraphAsync)(), '@nx/expo/plugin', plugin_1.createNodesV2, { startTargetName: ['start', 'expo:start', 'expo-start'], buildTargetName: ['build', 'expo:build', 'expo-build'], prebuildTargetName: ['prebuild', 'expo:prebuild', 'expo-prebuild'], serveTargetName: ['serve', 'expo:serve', 'expo-serve'], installTargetName: ['install', 'expo:install', 'expo-install'], exportTargetName: ['export', 'expo:export', 'expo-export'], submitTargetName: ['submit', 'expo:submit', 'expo-submit'], runIosTargetName: ['run-ios', 'expo:run-ios', 'expo-run-ios'], runAndroidTargetName: [ 'run-android', 'expo:run-android', 'expo-run-android', ], buildDepsTargetName: [ 'build-deps', 'expo:build-deps', 'expo-build-deps', ], watchDepsTargetName: [ 'watch-deps', 'expo:watch-deps', 'expo-watch-deps', ], }, schema.updatePackageScripts); } const tasks = []; if (!schema.skipPackageJson) { tasks.push(moveDependency(host)); tasks.push(updateDependencies(host, schema)); } if (!schema.skipFormat) { await (0, devkit_1.formatFiles)(host); } return (0, devkit_1.runTasksInSerial)(...tasks); } function updateDependencies(host, schema) { return (0, devkit_1.addDependenciesToPackageJson)(host, { react: versions_1.reactVersion, 'react-dom': versions_1.reactDomVersion, 'react-native': versions_1.reactNativeVersion, expo: versions_1.expoVersion, }, { '@nx/expo': versions_1.nxVersion, '@expo/cli': versions_1.expoCliVersion, 'metro-config': versions_1.metroVersion, 'metro-resolver': versions_1.metroVersion, }, undefined, schema.keepExistingVersions); } function moveDependency(host) { return (0, devkit_1.removeDependenciesFromPackageJson)(host, ['@nx/react-native'], []); } exports.default = expoInitGenerator;