UNPKG

@nx/react-native

Version:

The Nx Plugin for React Native contains generators for managing React Native applications and libraries within an Nx workspace. It provides: -Integration with libraries such as Jest, Detox, and Storybook. -Scaffolding for creating buildable libraries th

114 lines (113 loc) 3.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addProject = addProject; const devkit_1 = require("@nx/devkit"); function addProject(host, options) { const nxJson = (0, devkit_1.readNxJson)(host); const hasPlugin = nxJson.plugins?.some((p) => typeof p === 'string' ? p === '@nx/react-native/plugin' : p.plugin === '@nx/react-native/plugin'); const project = { root: options.appProjectRoot, sourceRoot: `${options.appProjectRoot}/src`, projectType: 'application', targets: hasPlugin ? {} : getTargets(options), tags: options.parsedTags, }; const packageJson = { name: options.importPath, version: '0.0.1', private: true, }; if (!options.useProjectJson) { if (options.projectName !== options.importPath) { packageJson.nx = { name: options.projectName }; } if (!hasPlugin) { packageJson.nx ??= {}; packageJson.nx.targets = getTargets(options); } if (options.parsedTags?.length) { packageJson.nx ??= {}; packageJson.nx.tags = options.parsedTags; } } else { (0, devkit_1.addProjectConfiguration)(host, options.projectName, { ...project, }); } if (!options.useProjectJson || options.isTsSolutionSetup) { (0, devkit_1.writeJson)(host, (0, devkit_1.joinPathFragments)(options.appProjectRoot, 'package.json'), packageJson); } } function getTargets(options) { const architect = {}; architect.start = { executor: '@nx/react-native:start', dependsOn: [], options: { port: 8081, }, }; architect['run-ios'] = { executor: '@nx/react-native:run-ios', dependsOn: [], options: {}, }; architect['bundle-ios'] = { executor: '@nx/react-native:bundle', dependsOn: [], outputs: ['{options.bundleOutput}'], options: { entryFile: options.entryFile, platform: 'ios', bundleOutput: `dist/${options.appProjectRoot}/ios/main.jsbundle`, }, }; architect['run-android'] = { executor: '@nx/react-native:run-android', dependsOn: [], options: {}, }; architect['build-android'] = { executor: '@nx/react-native:build-android', outputs: [ `{projectRoot}/android/app/build/outputs/bundle`, `{projectRoot}/android/app/build/outputs/apk`, ], dependsOn: [], options: {}, }; architect['build-ios'] = { executor: '@nx/react-native:build-ios', outputs: ['{projectRoot}/ios/build/Build'], dependsOn: [], options: {}, }; architect['pod-install'] = { executor: '@nx/react-native:pod-install', dependsOn: ['sync-deps'], outputs: ['{projectRoot}/ios/Pods', '{projectRoot}/ios/Podfile.lock'], options: {}, }; architect.upgrade = { executor: '@nx/react-native:upgrade', options: {}, }; architect['bundle-android'] = { executor: '@nx/react-native:bundle', dependsOn: [], outputs: ['{options.bundleOutput}'], options: { entryFile: options.entryFile, platform: 'android', bundleOutput: `dist/${options.appProjectRoot}/android/main.jsbundle`, }, }; architect['sync-deps'] = { executor: '@nx/react-native:sync-deps', options: {}, }; return architect; }