Package Exports
- react-native-zip-archive
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-native-zip-archive) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
React Native Zip Archive 
Zip archive utility for react-native
Note: this project is under development and functionality will improve over time. Currently it provides only the bare minimum of functionality.
Installation
npm install react-native-zip-archive --saveGetting started - iOS
- In XCode, in the project navigator right click
Libraries➜Add Files to [your project's name] - Go to
node_modules➜react-native-zip-archiveand addRNZipArchive.xcodeproj - Add
libRNZipArchive.a(from 'Products' under RNZipArchive.xcodeproj) to your project'sBuild Phases➜Link Binary With Librariesphase - Add the
libzlibrary to your target - Look for Header Search Paths and make sure it contains both
$(SRCROOT)/../react-native/Reactand$(SRCROOT)/../../React- mark both as recursive - Run your project (
Cmd+R)
Warning: If you're using rnpm to link this module, you also need manually link libz library to your target otherwise your project wouldn't compile.
Getting started - Android
Edit
android/settings.gradleto look like this (without the +):rootProject.name = 'MyApp' include ':app' + include ':react-native-zip-archive' + project(':react-native-zip-archive').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-zip-archive/android')Edit
android/app/build.gradle(note: app folder) to look like this:apply plugin: 'com.android.application' android { ... } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.0.0' compile 'com.facebook.react:react-native:0.16.+' + compile project(':react-native-zip-archive') }Edit your
MainActivity.java(deep inandroid/app/src/main/java/...) to look like this (note two places to edit):package com.myapp; + import com.rnziparchive.RNZipArchivePackage; .... @Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), + new RNZipArchivePackage() ); } }
Usage
require it in your file
const ZipArchive = require('react-native-zip-archive')you may also want to use something like react-native-fs to access the file system (check its repo for more information)
const RNFS = require('react-native-fs')API
unzip(source: string, target: string): Promise
unzip from source to target
Example
let sourcePath = 'path_to_your_zip_file'
let targetPath = RNFS.DocumentDirectoryPath
ZipArchive.unzip(sourcePath, targetPath)
.then(() => {
console.log('unzip completed!')
})
.catch((error) => {
console.log(error)
})unzipAssets(assetPath: string, target: string): Promise
unzip file from Android
assetsfolder to target path
Note: Android only.
assetPath is the relative path to the file inside the pre-bundled assets folder, e.g. folder/myFile.zip. Do not pass an absolute directory.
let assetPath = 'folder/myFile.zip'
let targetPath = RNFS.DocumentDirectoryPath
ZipArchive.unzipAssets(assetPath, targetPath)
.then(() => {
console.log('unzip completed!')
})
.catch((error) => {
console.log(error)
})subscribe(callback: ({progress: number})): EmitterSubscription
Subscribe to unzip progress callbacks. Useful for displaying a progress bar on your UI during the unzip process.
Your callback will passed an object with the following fields:
progress(number) a value from 0 to 1 representing the progress of the unzip method. 1 is completed.
Note: Remember to unsubscribe! Run .remove() on the object returned by this method.
componentWillMount() {
this.zipProgress = ZipArchive.subscribe((e)=>{
this.setState({zipProgress: e.progress})
});
}
componentWillUnmount() {
// Important: Unsubscribe from the progress events
this.zipProgress.remove()
}