Skip to content

codegen: outputDir is not relative to the package, but to the current directory #45112

@mfazekas

Description

@mfazekas

Description

If my rtn-caclulator package.json have:

"includesGeneratedCode": true,
    "outputDir": {
      "android": "android/codegen"
    }

i'd expect codegen to generate into rtn-caclulator/android/codegen but codegen will generate code into andorid/codegen so it'll depend on where i execute codegen from.

Steps to reproduce

  1. clone https://github.com/mfazekas/rn-codegen-javapackagename/
cd ReproducerApp
yarn install
npx react-native codegen --path ../RTNCalculator --platform android
ReproducerApp % ls -la android/codegen/java/com/rtncalculator/                             
total 8
drwxr-xr-x  3 boga  staff    96 Jun 22 07:20 .
drwxr-xr-x  3 boga  staff    96 Jun 22 07:20 ..
-rw-r--r--  1 boga  staff  1130 Jun 22 07:20 NativeRTNCalculatorSpec.java

It think that in code the issue is that in the bellow code projectRoot points to the project's root, while outputDirFromPkgJson is just a relative path.

if (outputDirFromPkgJson != null) {
baseOutputPath = outputDirFromPkgJson;
} else {
baseOutputPath = projectRoot;
}

React Native Version

0.74.2

Affected Platforms

Runtime - Android

Areas

Codegen

Output of npx react-native info

info Fetching system and libraries information...
System:
  OS: macOS 14.5
  CPU: (12) arm64 Apple M2 Max
  Memory: 106.42 MB / 32.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 18.20.2
    path: ~/.nvm/versions/node/v18.20.2/bin/node
  Yarn:
    version: 3.6.4
    path: ~/.nvm/versions/node/v18.20.2/bin/yarn
  npm:
    version: 10.5.0
    path: ~/.nvm/versions/node/v18.20.2/bin/npm
  Watchman:
    version: 2024.05.06.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.14.2
    path: /Users/boga/.rbenv/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.5
      - iOS 17.5
      - macOS 14.5
      - tvOS 17.5
      - visionOS 1.2
      - watchOS 10.5
  Android SDK: Not Found
IDEs:
  Android Studio: 2024.1 AI-241.15989.150.2411.11948838
  Xcode:
    version: 15.4/15F31d
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 20.0.1
    path: /usr/bin/javac
  Ruby:
    version: 2.7.8
    path: /Users/boga/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.74.2
    wanted: 0.74.2
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: Not found
  newArchEnabled: false

Stacktrace or Logs

-

Reproducer

https://github.com/mfazekas/rn-codegen-javapackagename/

Screenshots and Videos

Metadata

Metadata

Assignees

Labels

Issue: Author Provided ReproThis issue can be reproduced in Snack or an attached project.Type: New ArchitectureIssues and PRs related to new architecture (Fabric/Turbo Modules)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions