Skip to content

Autolinking transitive native dependencies. (Component Library Monorepo) #923

Closed

Description

@cboar

We are running into issues with the autolinker not picking up on transitive dependencies that need linking. The following is a sample structure for our project.

▾  component-library/
  ▾  Component1/               
    ▸  src/                  
       package.json            
  ▾  Component2/               
    ▸  src/                  
       package.json

▾  implementation-app/         
  ▸  android/                  
  ▸  ios/                      
     App.js                    
     app.json                  
     babel.config.js           
     index.js                  
     metro.config.js           
     package.json              

Individual components from the component library are included in the implementation App's package.json as such:

  "dependencies": {
    "@my-comps/component1": "file:../component-library/Component1"
  }

Some of our components depend on a native module that requires linking from the implementation App, such as react-native-device-info.

When building the implementation App, it is evident that these transitive dependencies are not linked, as the generated PackageList.java does not include them - only those directly defined in the App's package.json. I've looked at configuring react-native.config.js for each component, but was unable to find configuration that could assist with this kind of set up.

Activity

  1. liamjones commented on Jan 27, 2020

    @liamjones
    Contributor

    We've hit this too - what we've been doing, for now, is adding the module as a peer and dev dependency in the component project and that at least then flags if it's not been added as a direct dependency in the top-level app.

  2. vomchik commented on Jan 31, 2020

    @vomchik

    The same issue :(

  3. cboar commented on Jan 31, 2020

    @cboar
    Author

    @liamjones Adding them as devDependencies/peerDependencies at the component-package level does not seem to help.

    I have also tried manually linking these native modules, but it seems you are no longer able to link a package that is not directly defined in package.json - so the same issue remains:

    error Unknown dependency. Make sure that the package you are trying to link is already installed in your "node_modules" and present in your "package.json" dependencies.
    

    @thymikee @grabbou @Esemesek Any insight on this? I don't think this is an obscure use-case.

  4. liamjones commented on Feb 3, 2020

    @liamjones
    Contributor

    @cboar ah, you misunderstand. It doesn't fix the issue, no, but does result in yarn complaining about an unmet peer dependency which hopefully prompts the dev to add it as a direct dependency. :)

  5. thymikee commented on Mar 9, 2020

    @thymikee
    Member

    Same problem as #870. Let's move the discussion there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions