2016-09-02 12 views
10

Właśnie utworzyłem komponent dla React-Native, który niedługo pchnę do npm jako paczki. Chociaż mam do czynienia z problemem.React Zależność komponentu natywnego, która wymaga połączenia rnpm

Komponent jest zależny od innego pakietu npm o nazwie react-native-image-resizer. Aby działał, ten pakiet musi być połączony z rnpm.

Chociaż po zainstalowaniu komponentu w zupełnie nowym projekcie, zależność nie zostanie automatycznie powiązana, a biblioteka natywna nie pojawi się w projekcie. Oczywiście, kiedy uruchomię rnpm link, nie doda go również do projektu.

Zastanawiam się, jaki byłby najlepszy sposób instalacji i połączenia tej zależności?

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... 

Ponadto, jak widać tam, mam niezaspokojone rówieśnicze zależnościami problem z reagują-rodzimy po zainstalowaniu mój komponent w moim przykładzie projektu, mimo że jest on umieszczony prawidłowo (z prawej wersji) w moje zależności w pakiecie.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" 
    } 
} 

Jakiś pomysł, dlaczego się skarży?

Repo składnika dostępnego tutaj: http://github.com/alexmngn/react-native-image-crop.git

Dzięki

Odpowiedz

3

rnpm link linki tylko pakiety Występuje w package.json, na ogół te pakiety są instalowane za pośrednictwem polecenia rnpm install lub npm install --save.

Aby automatycznie zrobić to dla osób, które instalują pakiet, można napisać skrypt npm preinstall, który zostanie wykonany przed zainstalowaniem pakietu.

W package.json dodać scripts bloku jak ten

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

Po wykonaniu tej czynności, gdy ktoś spróbować zainstalować pacakge przez KMP, react-native-image-resizer zostanie zainstalowany po raz pierwszy, a także dodać urlopu wpis AB package.json - > zależność, aby połączenie rnpm działało poprawnie.

Więcej informacji o npm script

+0

nie mogłem zrobić to rozwiązać mój problem. Właśnie stworzyłem repo na github z moim komponentem, link znajduje się w poście. Czy widzisz, na czym polega problem? – alexmngn