CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-react-native-community--cli-types

TypeScript type definitions for React Native Community CLI configuration and command structures

Pending
Overview
Eval results
Files

android-platform.mddocs/

Android Platform Types

Comprehensive Android platform configuration types covering project structure, dependency management, C++ modules, and build configuration with full React Native integration.

Capabilities

Android Project Configuration

Complete Android project configuration defining app structure, build settings, and development workflow parameters.

/**
 * Complete Android project configuration
 */
interface AndroidProjectConfig {
  /** Source directory containing Java/Kotlin code (e.g., "android/app/src/main/java") */
  sourceDir: string;
  /** Application name as defined in Android manifest */
  appName: string;
  /** Java package name (e.g., "com.mycompany.myapp") */
  packageName: string;
  /** Android application ID for builds */
  applicationId: string;
  /** Main activity class name */
  mainActivity: string;
  /** Gradle dependency configuration (e.g., "implementation", "api") */
  dependencyConfiguration?: string;
  /** Additional command parameters for watch mode */
  watchModeCommandParams?: string[];
  /** Asset directories for this platform */
  assets: string[];
}

Usage Examples:

import { AndroidProjectConfig } from "@react-native-community/cli-types";

// Standard Android project configuration
const androidConfig: AndroidProjectConfig = {
  sourceDir: "android/app/src/main/java",
  appName: "MyReactNativeApp",
  packageName: "com.mycompany.myapp",
  applicationId: "com.mycompany.myapp",
  mainActivity: "MainActivity",
  dependencyConfiguration: "implementation",
  watchModeCommandParams: ["--verbose"],
  assets: ["./android/app/src/main/assets"]
};

// Validate Android configuration
function validateAndroidConfig(config: AndroidProjectConfig): boolean {
  const requiredFields = ['sourceDir', 'appName', 'packageName', 'applicationId', 'mainActivity'];
  return requiredFields.every(field => !!config[field as keyof AndroidProjectConfig]);
}

// Get app identifiers
function getAndroidIdentifiers(config: AndroidProjectConfig) {
  return {
    appName: config.appName,
    packageName: config.packageName,
    applicationId: config.applicationId,
    mainActivity: config.mainActivity
  };
}

Android Project Parameters

Input parameters for configuring Android projects, with optional fields for flexibility.

/**
 * Parameters for Android project configuration with optional fields
 */
type AndroidProjectParams = {
  /** Source directory (optional, will be detected if not provided) */
  sourceDir?: string;
  /** Application name (optional, will be detected from manifest) */
  appName?: string;
  /** Path to AndroidManifest.xml (optional, will be detected) */
  manifestPath?: string;
  /** Java package name (optional, will be detected from manifest) */
  packageName?: string;
  /** Gradle dependency configuration */
  dependencyConfiguration?: string;
  /** Additional command parameters for watch mode */
  watchModeCommandParams?: string[];
  /** Asset directories */
  assets?: string[];
};

Usage Examples:

import { AndroidProjectParams } from "@react-native-community/cli-types";

// Minimal Android parameters (auto-detection)
const minimalParams: AndroidProjectParams = {
  dependencyConfiguration: "implementation"
};

// Full Android parameters
const fullParams: AndroidProjectParams = {
  sourceDir: "android/app/src/main/java",
  appName: "MyApp",
  manifestPath: "android/app/src/main/AndroidManifest.xml",
  packageName: "com.mycompany.myapp",
  dependencyConfiguration: "api",
  watchModeCommandParams: ["--info", "--stacktrace"],
  assets: ["./assets", "./android/app/src/main/assets"]
};

// Create parameters from existing config
function paramsFromConfig(config: AndroidProjectConfig): AndroidProjectParams {
  return {
    sourceDir: config.sourceDir,
    appName: config.appName,
    packageName: config.packageName,
    dependencyConfiguration: config.dependencyConfiguration,
    watchModeCommandParams: config.watchModeCommandParams,
    assets: config.assets
  };
}

Android Dependency Configuration

Comprehensive dependency configuration supporting Java/Kotlin libraries, C++ modules, and React Native component descriptors.

/**
 * Complete Android dependency configuration supporting various module types
 */
type AndroidDependencyConfig = {
  /** Source directory of the dependency */
  sourceDir: string;
  /** Import path for the package in Java/Kotlin (null if no import needed) */
  packageImportPath: string | null;
  /** Package instance creation code (null if no instance needed) */
  packageInstance: string | null;
  /** Gradle dependency configuration (e.g., "implementation", "api") */
  dependencyConfiguration?: string;
  /** Build types this dependency supports */
  buildTypes: string[];
  /** Library name for native modules (null for non-native) */
  libraryName?: string | null;
  /** Component descriptors for Fabric components (null if not applicable) */
  componentDescriptors?: string[] | null;
  /** Path to CMakeLists.txt for C++ modules (null if no CMake) */
  cmakeListsPath?: string | null;
  /** CMake module name for C++ modules (null if no CMake) */
  cxxModuleCMakeListsModuleName?: string | null;
  /** CMake lists path for C++ modules (null if no CMake) */
  cxxModuleCMakeListsPath?: string | null;
  /** Header name for C++ modules (null if no C++) */
  cxxModuleHeaderName?: string | null;
  /** Whether this is a pure C++ dependency (no Java/Kotlin code) */
  isPureCxxDependency?: boolean;
};

Usage Examples:

import { AndroidDependencyConfig } from "@react-native-community/cli-types";

// Java/Kotlin library dependency
const javaLibraryDep: AndroidDependencyConfig = {
  sourceDir: "android",
  packageImportPath: "com.mylibrary.MyLibraryPackage",
  packageInstance: "new MyLibraryPackage()",
  dependencyConfiguration: "implementation",
  buildTypes: ["debug", "release"],
  libraryName: "mylibrary",
  componentDescriptors: null,
  cmakeListsPath: null,
  cxxModuleCMakeListsModuleName: null,
  cxxModuleCMakeListsPath: null,
  cxxModuleHeaderName: null,
  isPureCxxDependency: false
};

// C++ module dependency
const cppModuleDep: AndroidDependencyConfig = {
  sourceDir: "android",
  packageImportPath: null,
  packageInstance: null,
  dependencyConfiguration: "implementation",
  buildTypes: ["debug", "release"],
  libraryName: "mycppmodule",
  componentDescriptors: null,
  cmakeListsPath: "android/CMakeLists.txt",
  cxxModuleCMakeListsModuleName: "mycppmodule",
  cxxModuleCMakeListsPath: "android/src/main/cpp/CMakeLists.txt",
  cxxModuleHeaderName: "mycppmodule.h",
  isPureCxxDependency: true
};

// Fabric component dependency
const fabricComponentDep: AndroidDependencyConfig = {
  sourceDir: "android",
  packageImportPath: "com.mycomponent.MyComponentPackage",
  packageInstance: "new MyComponentPackage()",
  dependencyConfiguration: "implementation",
  buildTypes: ["debug", "release"],
  libraryName: "mycomponent",
  componentDescriptors: ["MyComponentComponentDescriptor"],
  cmakeListsPath: null,
  cxxModuleCMakeListsModuleName: null,
  cxxModuleCMakeListsPath: null,
  cxxModuleHeaderName: null,
  isPureCxxDependency: false
};

// Check dependency type
function analyzeDependencyType(dep: AndroidDependencyConfig): string {
  if (dep.isPureCxxDependency) return "Pure C++ Module";
  if (dep.componentDescriptors?.length) return "Fabric Component";
  if (dep.cmakeListsPath) return "Hybrid Java/C++ Module";
  if (dep.packageImportPath) return "Java/Kotlin Library";
  return "Unknown";
}

Android Dependency Parameters

Input parameters for configuring Android dependencies with optional fields for auto-detection.

/**
 * Parameters for Android dependency configuration with optional auto-detection fields
 */
type AndroidDependencyParams = {
  /** Source directory (optional, will be detected) */
  sourceDir?: string;
  /** Path to AndroidManifest.xml (optional, will be detected) */
  manifestPath?: string;
  /** Java package name (optional, will be detected) */
  packageName?: string;
  /** Gradle dependency configuration */
  dependencyConfiguration?: string;
  /** Import path for the package (optional, will be detected) */
  packageImportPath?: string;
  /** Package instance creation code (optional, will be detected) */
  packageInstance?: string;
  /** Build types this dependency supports */
  buildTypes?: string[];
  /** Library name for native modules */
  libraryName?: string | null;
  /** Component descriptors for Fabric components */
  componentDescriptors?: string[] | null;
  /** Path to CMakeLists.txt for C++ modules */
  cmakeListsPath?: string | null;
  /** CMake module name for C++ modules */
  cxxModuleCMakeListsModuleName?: string | null;
  /** CMake lists path for C++ modules */
  cxxModuleCMakeListsPath?: string | null;
  /** Header name for C++ modules */
  cxxModuleHeaderName?: string | null;
};

Usage Examples:

import { AndroidDependencyParams } from "@react-native-community/cli-types";

// Minimal parameters (auto-detection)
const minimalDependencyParams: AndroidDependencyParams = {
  dependencyConfiguration: "implementation"
};

// Parameters for Java library
const javaLibraryParams: AndroidDependencyParams = {
  sourceDir: "android",
  packageImportPath: "com.mylibrary.MyLibraryPackage",
  packageInstance: "new MyLibraryPackage()",
  dependencyConfiguration: "implementation",
  buildTypes: ["debug", "release"],
  libraryName: "mylibrary"
};

// Parameters for C++ module
const cppModuleParams: AndroidDependencyParams = {
  sourceDir: "android",
  dependencyConfiguration: "implementation",
  libraryName: "mycppmodule",
  cmakeListsPath: "android/CMakeLists.txt",
  cxxModuleCMakeListsModuleName: "mycppmodule",
  cxxModuleHeaderName: "mycppmodule.h"
};

// Convert parameters to full config (simulated auto-detection)
function simulateConfigGeneration(
  params: AndroidDependencyParams,
  detectedValues: Partial<AndroidDependencyConfig>
): AndroidDependencyConfig {
  return {
    sourceDir: params.sourceDir || detectedValues.sourceDir || "android",
    packageImportPath: params.packageImportPath || detectedValues.packageImportPath || null,
    packageInstance: params.packageInstance || detectedValues.packageInstance || null,
    dependencyConfiguration: params.dependencyConfiguration || "implementation",
    buildTypes: params.buildTypes || ["debug", "release"],
    libraryName: params.libraryName || detectedValues.libraryName || null,
    componentDescriptors: params.componentDescriptors || null,
    cmakeListsPath: params.cmakeListsPath || null,
    cxxModuleCMakeListsModuleName: params.cxxModuleCMakeListsModuleName || null,
    cxxModuleCMakeListsPath: params.cxxModuleCMakeListsPath || null,
    cxxModuleHeaderName: params.cxxModuleHeaderName || null,
    isPureCxxDependency: !!(params.cmakeListsPath && !params.packageImportPath)
  };
}

Platform Integration

How Android types integrate with the broader platform configuration system.

Usage Examples:

import { Config, AndroidProjectParams, AndroidDependencyParams } from "@react-native-community/cli-types";

// The Android platform configuration is accessed through Config.platforms.android
// Note: AndroidPlatformConfig type is not exported, but the platform is accessible

// Generate Android project config from parameters
function generateAndroidProjectConfig(
  config: Config,
  projectRoot: string,
  params?: AndroidProjectParams
): AndroidProjectConfig | void {
  return config.platforms.android.projectConfig(projectRoot, params);
}

// Generate Android dependency config
function generateAndroidDependencyConfig(
  config: Config,
  dependency: string,
  params: AndroidDependencyParams
): AndroidDependencyConfig | void {
  return config.platforms.android.dependencyConfig(dependency, params);
}

// Check if project has Android support
function hasAndroidSupport(config: Config): boolean {
  return !!config.project.android;
}

// Access Android platform through config
function getAndroidSettings(config: Config) {
  const androidPlatform = config.platforms.android;
  return {
    npmPackageName: androidPlatform.npmPackageName,
    hasProjectConfig: typeof androidPlatform.projectConfig === 'function',
    hasDependencyConfig: typeof androidPlatform.dependencyConfig === 'function'
  };
}

Install with Tessl CLI

npx tessl i tessl/npm-react-native-community--cli-types

docs

android-platform.md

command-system.md

configuration-types.md

index.md

ios-platform.md

third-party-types.md

tile.json