This library allows you to include resources of any type in your javascript source folders and load them without having to do anything special. It supports iOS and Android, including Android release mode.
$ yarn add react-native-local-resource
or
$ npm install react-native-local-resource --save
Native installation is required to support Android release mode.
$ react-native link react-native-local-resource
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import com.igorbelyayev.rnlocalresource.RNLocalResourcePackage;
to the imports at the top of the file - Add
new RNLocalResourcePackage()
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:include ':react-native-local-resource' project(':react-native-local-resource').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-local-resource/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':react-native-local-resource')
Not required.
Specifying which file extensions you want to support is slightly different depending on which version of React Native your project is using.
You will need a metro.config.js file in order to use this library. You should already probably have this file in your root project directory, but if you don't, create it.
Then, inside a module.exports
object,
create a key called resolver
with another object with a key called assetExts
.
The value of assetExts
should be an array of the resource file extensions you want to support.
For example, if you want to support md
and txt
files, your metro.config.js
would like like this:
module.exports = {
resolver: {
assetExts: ["md", "txt"]
}
}
You will need a rn-cli.config.js file in order to use this library. Check your root project directory to see if you already have this file and if you don't, create it.
Then, inside a module.exports
object,
create a key called resolver
with another object with a key called assetExts
.
The value of assetExts
should be an array of the resource file extensions you want to support.
For example, if you want to support md
and txt
files, your rn-cli.config.js
would like like this:
module.exports = {
resolver: {
assetExts: ["md", "txt"]
}
}
You will need a rn-cli.config.js file in order to use this library. Check your root project directory to see if you already have this file and if you don't, create it.
Then, inside a module.exports
object,
create a function called getAssetExts
which returns an array of the resource file
extensions you want to support.
For example, if you want to support md
and txt
files, your rn-cli.config.js
would like like this:
module.exports = {
getAssetExts() {
return ["md", "txt"]
}
}
The library exposes a single async
function which accepts the source of the resource as the argument
and returns the string content of the resource.
Example usage:
import loadLocalResource from 'react-native-local-resource'
import myResource from './my_resource.txt'
function example() {
loadLocalResource(myResource).then((myResourceContent) => {
console.log("myResource was loaded: " + myResourceContent)
}
)
}
This repo contains a demo project in the demo_project
folder.