Зависимость компонента React Native, для которой требуется ссылка 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 react-native@^0.31.0
└── [email protected] 

npm WARN [email protected] requires a peer of react-native@>=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...

Кроме того, как вы можете видеть здесь, у меня возникает проблема неудовлетворенных одноранговых зависимостей с react-native, когда я устанавливаю свой компонент в своем примерном проекте, даже если он правильно указан (с правильной версией) в моих зависимостях в package.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"
  }
}

Есть идеи, почему он жалуется?

Репозиторий компонента доступен здесь: http://github.com/alexmngn/react-native-image-crop.git

Спасибо


person alexmngn    schedule 02.09.2016    source источник


Ответы (1)


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

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

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

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

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

Подробнее о скрипте npm

person Xeijp    schedule 03.09.2016
comment
Я не мог сделать это, чтобы решить мою проблему. Я только что создал репозиторий на github с моим компонентом, ссылка находится в сообщении с вопросом. Вы видите, в чем проблема? - person alexmngn; 07.09.2016