Erste Schritte
Kopiere einen Setup-Prompt mit den Installationsschritten und dem vollständigen Markdown-Guide für dieses Plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-zip`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/zip/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Installieren
Abschnitt „Installation“Du kannst unser KI-gestütztes Setup nutzen, um das Plugin zu installieren. Füge die Capgo Skills mit dem folgenden Befehl deinem KI-Tool hinzu:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsNutze dann diesen Prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-zip` plugin in my project.Wenn du ein manuelles Setup bevorzugst, installiere das Plugin mit den folgenden Befehlen und befolge die plattformspezifischen Anweisungen unten:
bun add @capgo/capacitor-zipbunx cap syncImportieren
Abschnitt mit dem Titel „Import“import { CapacitorZip } from '@capgo/capacitor-zip';Quickstart
Abschnitt „Quick start“import { CapacitorZip } from '@capgo/capacitor-zip';
const listener = await CapacitorZip.addListener('progress', (event) => { updateBar(event.loaded, event.total);});await CapacitorZip.zip({ source: 'file:///data/user/0/.../export/', destination: 'file:///data/user/0/.../export.zip',});await listener.remove();Beispiel: Ein Update-Bundle entpacken
Abschnitt: „Beispiel: Update-Bundle entpacken“await CapacitorZip.unzip({ source: downloadedZipUri, destination: unpackDirUri,});Häufige Stolperfallen
Abschnitt „Häufige Fallstricke“- Web-Zip:
zip()wirft Fehler im Web; verlagere die Komprimierung auf Native oder den Server. - Android-Passwörter: AES-Passwörter sind aktuell nur für Android verfügbar; teste Archive direkt auf dem Gerät.
- URI-Schemata: verwende absolute
file://Pfade, die das native code lesen kann.
API Übersicht
Abschnitt „API Übersicht“Komprimiere eine Datei oder ein Verzeichnis in ein ZIP-Archiv.
Erstellt ein komprimiertes Archiv aus einer Quelldatei oder einem Verzeichnis. Ist die Quelle ein Ordner, enthält das Archiv die gesamte Verzeichnisstruktur.
Plattformspezifische Hinweise:
- iOS: Passwortschutz wird nicht unterstützt. Falls ein Passwort angegeben wird, wird dieses ignoriert und eine Warnung in den Logs protokolliert.
- Android: Unterstützt AES-256-Verschlüsselung, wenn ein Passwort angegeben wird.
- Web: Nicht unterstützt. Beim Aufruf wird ein Fehler geworfen.
import { CapacitorZip } from '@capgo/capacitor-zip';
// Compress a directory without passwordawait CapacitorZip.zip({ source: '/path/to/my-folder', destination: '/path/to/output.zip'});unzip
Abschnitt „unzip“Entpacke ein ZIP-Archiv in ein angegebenes Zielverzeichnis.
Entpackt alle Dateien und Ordner aus einem ZIP-Archiv und behält dabei die Verzeichnisstruktur bei. Das Zielverzeichnis wird erstellt, falls es nicht existiert.
Plattformspezifische Hinweise:
- iOS: Unterstützt Standard-ZIP-Archive. Passwortgeschützte Archive werden mit dem angegebenen Passwort extrahiert.
- Android: Unterstützt AES-verschlüsselte Archive mit Passwort. Beinhaltet Schutz vor Zip-Slip-Vulnerabilities.
- Web: Lädt jede Datei einzeln in den Download-Ordner des Browsers. Kann keine Verzeichnisstruktur erstellen.
import { CapacitorZip } from '@capgo/capacitor-zip';
// Extract a standard ZIP archiveawait CapacitorZip.unzip({ source: '/path/to/archive.zip', destination: '/path/to/extract-folder'});Typreferenz
Abschnitt mit dem Titel „Typreferenz“ZipOptions
Abschnitt mit dem Titel „ZipOptions“Optionen zum Erstellen eines ZIP-Archivs.
export interface ZipOptions { /** * Path to the file or directory to compress. * * This can be an absolute path or a path relative to the app's working directory. * If the source is a directory, all its contents will be recursively compressed * while preserving the directory structure. * * Platform-specific notes: * - iOS: Use file:// URLs or absolute paths. Relative paths are resolved from the app's documents directory. * - Android: Use absolute file paths or content:// URIs for files accessible via the Android Storage Access Framework. * - Web: Not supported. * * @since 7.0.0 * @example '/Users/app/Documents/my-folder' * @example '/var/mobile/Containers/Data/Application/.../Documents/file.pdf' * @example 'file:///storage/emulated/0/Download/document.pdf' */ source: string;
/** * Path where the ZIP archive will be created. * * The destination path must include the .zip file extension. If the parent * directory doesn't exist, it will be created automatically. * * Platform-specific notes: * - iOS: Use file:// URLs or absolute paths. Relative paths are resolved from the app's documents directory. * - Android: Use absolute file paths. The plugin will create any missing parent directories. * - Web: Not supported. * * @since 7.0.0 * @example '/Users/app/Documents/archive.zip' * @example '/var/mobile/Containers/Data/Application/.../Documents/backup.zip' * @example 'file:///storage/emulated/0/Download/compressed.zip' */ destination: string;
/** * Optional password for encrypting the ZIP archive. * * When provided, the archive will be encrypted and require this password * to extract. Uses AES-256 encryption on Android. * * Platform-specific notes: * - iOS: Password protection is NOT supported. The password will be ignored and a warning will be logged. * - Android: Supports AES-256 encryption via zip4j library. The password must be provided during extraction. * - Web: Not supported. * * @since 7.0.0 * @example 'mySecurePassword123' */ password?: string;
/** * Whether to include the parent folder in the ZIP archive. * * When true (default), the source folder itself becomes the root directory in the archive. * When false, only the contents of the source folder are included at the root level. * * This option only applies when the source is a directory. For single files, this option is ignored. * * @default true * @since 8.0.5 * @example * ```typescript * // With includeParentFolder: true (default) * // Source: /cache/temp/ containing [database.backup, media/] * // ZIP contains: temp/database.backup, temp/media/ * await CapacitorZip.zip({ * source: '/cache/temp', * destination: '/cache/backup.zip', * includeParentFolder: true * }); * ``` * @example * ```typescript * // With includeParentFolder: false * // Source: /cache/temp/ containing [database.backup, media/] * // ZIP contains: database.backup, media/ * await CapacitorZip.zip({ * source: '/cache/temp', * destination: '/cache/backup.zip', * includeParentFolder: false * }); * ``` */ includeParentFolder?: boolean;}UnzipOptions
Abschnitt mit dem Titel „UnzipOptions“Optionen zum Extrahieren eines ZIP-Archivs.
export interface UnzipOptions { /** * Path to the ZIP archive to extract. * * The source must be a valid ZIP file. If the file doesn't exist or is * corrupted, the operation will fail with an error. * * Platform-specific notes: * - iOS: Use file:// URLs or absolute paths. Relative paths are resolved from the app's documents directory. * - Android: Use absolute file paths or content:// URIs for files accessible via the Android Storage Access Framework. * - Web: Use HTTP/HTTPS URLs. The file will be fetched and extracted in the browser. * * @since 7.0.0 * @example '/Users/app/Documents/archive.zip' * @example '/var/mobile/Containers/Data/Application/.../Documents/backup.zip' * @example 'file:///storage/emulated/0/Download/compressed.zip' * @example 'https://example.com/files/archive.zip' (Web only) */ source: string;
/** * Path to the directory where files will be extracted. * * The destination directory will be created if it doesn't exist. All files * and folders from the archive will be extracted while preserving the * directory structure. * * Platform-specific notes: * - iOS: Use file:// URLs or absolute paths. Relative paths are resolved from the app's documents directory. * - Android: Use absolute file paths. Includes protection against zip slip vulnerabilities. * - Web: Not applicable. Files are downloaded individually to the browser's download folder. * * @since 7.0.0 * @example '/Users/app/Documents/extracted' * @example '/var/mobile/Containers/Data/Application/.../Documents/files' * @example 'file:///storage/emulated/0/Download/extracted-files' */ destination: string;
/** * Optional password for decrypting password-protected archives. * * Required if the ZIP archive was encrypted with a password. If the password * is incorrect, extraction will fail with an error. * * Platform-specific notes: * - iOS: Supports password-protected ZIP archives. * - Android: Supports AES-encrypted archives created with zip4j or standard password-protected ZIPs. * - Web: Not supported. Password-protected archives cannot be extracted in the browser. * * @since 7.0.0 * @example 'mySecurePassword123' */ password?: string;}Source of Truth
Abschnitt mit dem Titel „Source of Truth“Diese Seite wird aus dem Plugin generiert src/definitions.ts. Führe den Sync erneut aus, wenn sich das öffentliche API upstream ändert.
Weiter geht's nach Getting Started
Abschnitt: „Weiter geht’s mit Getting Started“Wenn du es nutzt Erste Schritte um Dashboard- und API-Operationen zu planen, verbinde es mit Verwendung von @capgo/capacitor-zip für die native Funktionalität bei der Nutzung von @capgo/capacitor-zip, API Übersicht für Details zur Implementierung im API Overview, Einführung für die Implementierungsdetails in der Einleitung, API Schlüssel für das Implementierungsdetail in API Keys und Geräte für das Implementierungsdetail in Devices.