Реакция Нативная зависимость компонента, которая требует связи rnpm

Я только что создал компонент для React-Native, который я скоро поставлю в npm в качестве пакета. Хотя я столкнулся с проблемой.

Компонент зависит от другого пакета npm с именем react-native-image-resizer. Для работы этого пакета необходимо связать с rnpm.

Хотя, когда я просто устанавливаю свой компонент в совершенно новом проекте, зависимость не будет связана автоматически, а родная библиотека не будет отображаться в проекте. Конечно, когда я запускаю rnpm link, он не добавит его в проект.

Итак, мне интересно, что было бы лучшим способом установить и связать эту зависимость?

MacBook-Pro:Example $ npm install react-native-image-crop

> [email protected] preinstall /Users/alexmngn/Work/react-native-image-crop/Example/node_modules/.staging/react-native-image-crop-95365d1b
> npm install --save react-native-image-resizer

[email protected] (git+ssh://[email protected]/alexmngn/react-native-image-crop.git#90e002c7d0f01c9d61277c30cad375560f09a94a) /Users/alexmngn/Work/react-native-image-crop/Example/node_modules/.staging/react-native-image-crop-95365d1b
├── UNMET DEPENDENCY [email protected]^0.31.0
└── [email protected] 

npm WARN [email protected] requires a peer of [email protected]>=v0.14.2 but none was installed.
npm WARN [email protected] No repository field.
- [email protected] node_modules/react-native-image-crop/node_modules/react-native-image-resizer
[email protected] /Users/alexmngn/Work/react-native-image-crop/Example
└── [email protected]  (git+ssh://[email protected]/alexmngn/react-native-image-crop.git#90e002c7d0f01c9d61277c30cad375560f09a94a)

MacBook-Pro:Example $ rnpm link
MacBook-Pro:Example $ # Nothing gets linked here...

Кроме того, как вы можете видеть там, у меня проблема с неудовлетворенными одноранговыми зависимостями с response-native при установке моего компонента в моем примере проекта, хотя он указан правильно (с правильной версией) в моих зависимостях в пакете .json:

{
  "name": "Example",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start"
  },
  "dependencies": {
    "react": "15.2.1",
    "react-native": "^0.31.0",
    "react-native-image-crop": "git+ssh://github.com/alexmngn/react-native-image-crop.git"
  }
}

Любая идея, почему она жалуется?

Repo компонента, доступного здесь: http://github.com/alexmngn/react-native-image-crop.git

Спасибо

Ответ 1

rnpm link связывает только пакеты, найденные в package.json, обычно эти пакеты устанавливаются с помощью команды rnpm install или npm install --save.

Чтобы автоматически сделать это для тех, кто устанавливает ваш пакет, вы можете написать preinstall npm script, который будет выполнен до того, как пакет будет установлен.

В блоке package.json добавить scripts, как этот

{
  "scripts": {
    "preinstall": "npm install --save [email protected]"
  }
}

После этого, когда кто-то попытается установить ваш pacakge через npm, сначала будет установлен react-native-image-resizer, а также добавьте запись leave ab в package.json → , чтобы ссылка rnpm могла работать правильно.

Подробнее о npm script