UNPKG

@bencapp3/react-native-static-server

Version:
105 lines (70 loc) 3.51 kB
# React Native Static Server (v0.6, v0.5) _This documentation is for older library versions **v0.6** and **v0.5**. For newer versions (**v0.7**+) see the main [README.md](./README.md)_ ## Getting started - Install the package ```shell $ npm install --save @dr.pogodin/react-native-static-server ``` - If you intend to use this library in an [Expo app](https://expo.dev), it is possible, but requires additional setup efforts. See [this discussion](https://github.com/birdofpreyru/react-native-static-server/issues/8#issuecomment-1211605867) for details. ## Usage Declare the `StaticServer` with a port or use the default `0` to pick a random available port. ```jsx import StaticServer from '@dr.pogodin/react-native-static-server'; let server = new StaticServer(8080); // Start the server server.start().then((url) => { console.log("Serving at URL", url); }); // Stop the server server.stop(); // Check if native server running const isRunning = await server.isRunning() // isRunning - true/false ``` `StaticServer` serves from the document directory (default) or takes an optional absolute path to serve from. For instance, using [react-native-fs](https://github.com/johanneslumpe/react-native-fs) you can get the document directory and specify a directory from there. #### Default (document directory) ```javascript import StaticServer from '@dr.pogodin/react-native-static-server'; import RNFS from 'react-native-fs'; // create a path you want to write to let path = RNFS.DocumentDirectoryPath + '/www'; let server = new StaticServer(8080, path); ``` #### Custom folder (iOS) ##### Create the folder for static files Create a folder in your project's top-level directory (usually next to your node_modules and index.js file), and put the files you want to access over http in there. ##### Add folder (static files) to XCode This folder **must be added to XCode** so it gets bundled with the app. In XCode, `Project Navigator` right click in the folder project `Add files to "<project>"` Select the static folder **and clic options (Uncheck copy items if needed, Create folder references)** so don't duplicate files Clic Add. When the app gets bundled, this folder will be next to the compiled app, so using `MainBundlePath` property from `react-native-fs` you can access to the directory. ```javascript import StaticServer from '@dr.pogodin/react-native-static-server'; import RNFS from 'react-native-fs'; // path where files will be served from (index.html here) let path = RNFS.MainBundlePath + '/www'; let server = new StaticServer(8080, path); ``` If the server should only be accessible from within the app, set `localOnly` to `true` ```javascript import StaticServer from '@dr.pogodin/react-native-static-server'; // Just set options with defaults let server = new StaticServer({localOnly : true }); // Or also valid are: let server = new StaticServer(8080, {localOnly : true }); let server = new StaticServer(8080, path, {localOnly : true }); ``` If the server should not pause when the app is in the background, set `keepAlive` to `true` ```javascript let server = new StaticServer({keepAlive : true }); ``` Passing `0` as the port number will cause a random port to be assigned every time the server starts. It will reset to a new random port each time the server unpauses, so this should only be used with `keepAlive`. ```javascript let server = new StaticServer(0, {keepAlive : true }); ``` <!-- links --> [Babel]: https://babeljs.io/