I just created a component for React-Native that I will push soon to npm as a package. Although I'm facing an issue.
The component is dependent of another npm package called react-native-image-resizer
. This package needs to be linked with rnpm
in order to work.
Although, when I just install my component in a brand new project, the dependency won't be linked automatically, and the native library won't appear in the project. Of course, when I run rnpm link
, it won't add it to the project either.
So I'm wondering what would be the best way to install and link this dependency?
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...
Also, as you can see up there, I have an unmet peer dependencies issue with react-native when I install my component in my example project, even though it is listed properly (with the right version) in my dependencies in 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"
}
}
Any idea why it complains?
Repo of the component available here: http://github.com/alexmngn/react-native-image-crop.git
Thanks
The rnpm link
only links packages it found in package.json
, generally these packages are installed via command rnpm install
or npm install --save
.
In order to automatically do this for those who install your package, you can write a preinstall
npm script which will be executed before the package installed.
In thepackage.json
add scripts
block like this
{
"scripts": {
"preinstall": "npm install --save [email protected]"
}
}
After doing this, when someone try to install your pacakge via npm, react-native-image-resizer
will be installed first, and also add leave ab entry to package.json -> dependency so that rnpm link can work correctly.
Read more information about npm script
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With