|
| 1 | +# create-react-native-plugin |
| 2 | + |
| 3 | +Starting point for creating React Native plugins without native code. |
| 4 | + |
| 5 | +## Usage |
| 6 | + |
| 7 | +``` |
| 8 | +npm init react-native-plugin react-native-my-plugin |
| 9 | +# or |
| 10 | +npx create-react-native-plugin react-native-my-plugin |
| 11 | +``` |
| 12 | + |
| 13 | +This will bootstrap a new plugin inside a folder named `my-plugin` accordingly. Inside that folder the commands |
| 14 | +mentioned hereafter are available. |
| 15 | + |
| 16 | +Start working on your plugin by editing `/src/index.js` which will be the entry point for the plugin. |
| 17 | + |
| 18 | +## App |
| 19 | + |
| 20 | +Since you probably don't want to blind-code the whole plugin use the following command to generate an up-to-date |
| 21 | +React Native app which includes the plugin: |
| 22 | + |
| 23 | +``` |
| 24 | +npm run app |
| 25 | +``` |
| 26 | + |
| 27 | +This will create an app inside `/app` where except `/app/App.js` all files are gitignored. Here you can try out various |
| 28 | +use cases of the plugin and use this as a way to demonstrate the plugin. |
| 29 | + |
| 30 | +``` |
| 31 | +npm run watch |
| 32 | +``` |
| 33 | + |
| 34 | +Running the above will watch the plugin `/src/` folder for any kind of changes and copy them over to the app which will |
| 35 | +then automatically hot-reload. |
| 36 | + |
| 37 | +Don't forget to always check your plugin both on Android and iOS even though your not using native code the provided components |
| 38 | +might still differ depending on the platform. |
| 39 | + |
| 40 | +## Tests |
| 41 | + |
| 42 | +The template is configured to work with Jest out of the box. All non-native functionality can be tested from the terminal. |
| 43 | +With the following command you can run the tests which are found in a folder with the same name: |
| 44 | + |
| 45 | +``` |
| 46 | +npm test |
| 47 | +``` |
| 48 | + |
| 49 | +## Types |
| 50 | + |
| 51 | +Since React Native will usually run in a modern JavaScript engine there is no need to transpile your source code and |
| 52 | +apps can directly use the plugin source code. The Flow type checker is the default type system for react native and the |
| 53 | +source code is writting in flow. While TypeScript is the more popular type checker overall flow is more popular in the |
| 54 | +React Native ecosystem and can be used out of the box. Therefore this package will only support flow. |
| 55 | + |
| 56 | +## Naming |
| 57 | + |
| 58 | +React Native plugins are usually distributed through npm just as any other kind of browser and node plugins. To better distinguish |
| 59 | +the plugin from a browser or node plugin the prefix `react-native-whatever-plugin` is usually added. |
| 60 | + |
| 61 | +## Examples |
| 62 | + |
| 63 | +The following plugins have been created with create-react-native-plugin as a starting point. |
| 64 | + |
| 65 | +- [React Native Indicate](https://github.com/naminho/indicate/tree/master/plugins/react-native) |
| 66 | +Scroll indicator for views with overflow. |
| 67 | +- [Reactigation](https://github.com/naminho/reactigation) |
| 68 | +JS-only navigation for React Native. |
| 69 | +- [React Native Cols](https://github.com/naminho/react-native-cols) |
| 70 | +Grid for React Native. |
0 commit comments