Почему менеджер зависимостей Pod не определяет необходимые модули для установки? - PullRequest
3 голосов
/ 14 января 2020

Итак, этот вопрос является продолжением моего предыдущего вопроса: Как различные приложения могут импортировать из папки общих компонентов? реагировать / реагировать-нативный

Итак, я создал свой npm модуль , в котором я храню все свои компоненты. Эти компоненты могут использовать как можно больше приложения, как мне нравится. Потому что я буду делать эти компоненты многократно используемыми.

Но я все еще сталкиваюсь с проблемой.

Я создал загрузочный компонент, который использует эту библиотеку: @ реагировать-нативное сообщество / маска-вид . Эта библиотека должна установить зависимость внутри / ios / Podfile. Сначала Я создал этот компонент в одном из реактивных проектов.

yarn add @react-native-community/masked-view
..
success Saved 1 new dependency.

cd ios/
pod install
..
Installing RNCMaskedView (0.1.6)
Pod installation complete! There are 33 dependencies from the Podfile and 31 total pods installed.

'

Итак, я запустил свой код, и компонент Загрузка работает. Теперь я хочу добавить это в модуль NPM (который, опять же, я создал сам), который будет содержать все мои компоненты.

Так что я go в / my-awesome-99-components /, который имеет собственный пакет. json, так как это модуль, который я буду импортировать в каждый проект, над которым я работаю.

In / my-awesome-99-components /

yarn add react react-native @react-native-community/masked-view
..
success Saved 1 new dependency.

// Created Loading.js - this is the loading component

yarn publish
..

In / реагировать-нативный-проект-1 /

yarn add my-awesome-99-components
..
Done in 3.17s.

cd ios/
Pod install
..

Здесь проблема возникает. Теперь Podfile не будет устанавливать RNCMaskedView, потому что, очевидно, мой модуль не сообщает проекту, что он должен установить некоторые пакеты внутри ios / Podfile.

Кто-нибудь знает, почему это происходит, и что было бы лучшим решением для этого?

Я ценю всю помощь!

Ответы [ 2 ]

0 голосов
/ 21 января 2020

Вы пытались добавить файл podspe c в репозиторий?

Вы можете изменить файл podspe c из пакета с маской, например

require 'json'

package = JSON.parse(File.read(File.join(__dir__, 'package.json')))

Pod::Spec.new do |s|
  s.name         = "RNCMaskedView"
  s.version      = package['version']
  s.summary      = package['description']

  s.authors      = package['author']
  s.platforms    = { :ios => "9.0", :tvos => "9.0" }

  s.source       = { :git => "https://github.com/react-native-community/react-native-masked-view.git", :tag => "v#{s.version}" }
  s.source_files  = "node_modules/@react-native-community/masked-view/ios/**/*.{h,m}"

  s.dependency 'React'
end

только изменить здесь будет путь к исходным файлам

0 голосов
/ 16 января 2020

Это типичная проблема с Podfile и общим связыванием React Native из зависимостей с зависимостями. react-navigation-stack имел ту же проблему с @react-native-community/masked-view.

Единственное решение - пометить @react-native-community/masked-view peerDependency, чтобы пользователь, использующий вашу библиотеку, знал что может потребоваться другая зависимость, и установите ее отдельно . Ваш вопрос может быть лучше решен этим ответом .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...