In nodejs wird der Archiver zum Komprimieren und Packen einiger Dateien in komprimierte Pakete im ZIP-Format oder TAR-Format verwendet; der Archiver ist ein Modul, das plattformübergreifende Paketierungsfunktionen implementieren kann. Sie können den „npm install archiver“ verwenden "-Anweisung Installieren Sie dieses Modul vor der Verwendung.
Die Betriebsumgebung dieses Artikels: Windows 10-System, NodeJS-Version 12.19.0, Dell G3-Computer.
Manchmal müssen wir einige Dateien komprimieren und in komprimierte Pakete im ZIP- oder TAR-Format packen, und möglicherweise müssen wir auch Verzeichnisse packen. In Node.js können Sie den Paketarchivierer eines Drittanbieters verwenden, um Vorgänge auszuführen.
Archiver ist ein Modul, das plattformübergreifende Verpackungsfunktionen in NodeJS realisieren kann. Es ist ein relativ einfach zu verwendendes Modul von Drittanbietern.
Installieren Sie das Archivmodul vor der Verwendung.
Der Code lautet wie folgt:
npm Archivierer installierenEinführung:
// Da die Datei gelesen werden muss, ist das fs-Modul erforderlich und const fs = require('fs'); const archiver = require('archiver');Die grundlegende Verwendung ist wie folgt:
// Im ersten Schritt die erforderlichen Module importieren const fs = require('fs'); const archiver = require('archiver'); __dirname + "/hello.zip");// Speichern Sie das komprimierte Paket im Verzeichnis des aktuellen Projekts und das komprimierte Paket heißt test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Stellen Sie die Komprimierungsstufe ein//Der dritte Schritt besteht darin, eine Pipeline-Verbindung herzustellen archive.pipe(output);//Der vierte Schritt besteht darin, die angegebene Datei zu komprimieren var stream = fs.createReadStream(__dirname + "/hello. txt");// Lesen Sie hello.txtarchive.append(stream, {name: 'hello.txt'});//Der fünfte Schritt besteht darin, die Komprimierung abzuschließen archive.finalize();Nachdem der Code erfolgreich ausgeführt wurde, wird in dem Verzeichnis, in dem sich das Projekt befindet, ein komprimiertes Paket mit dem Namen hello.zip generiert. Das komprimierte Paket enthält die komprimierte Datei hello.txt.
Komprimierte Dateien können mit archive.append() und archive.file() bearbeitet werden.
Die API zum Komprimieren einer einzelnen Datei lautet wie folgt:
//Eine Datei zum komprimierten Paket hinzufügen und die Daten über einen beschreibbaren Stream lesen. Const file1 = __dirname + '/file1.txt';archive.append(fs.createReadStream(file1), { name: 'file1.txt ' } );//Fügen Sie eine Datei zum komprimierten Paket hinzu und hängen Sie die Datei an, indem Sie die Zeichenfolge in die Datei schreiben archive.append('string Cheese!', { name: 'file2.txt' });//Fügen Sie eine Datei zur komprimierten Datei hinzu Paket, hänge die Datei über Buffer data an const buffer3 = Buffer.from('buff it!');archive.append(buffer3, { name: 'file3.txt' });// Füge eine Datei zum komprimierten Paket hinzu package, Übergeben Sie direkt den Dateipfad archive.file('file1.txt', { name: 'file4.txt' });Das vollständige Beispiel lautet wie folgt:
// Im ersten Schritt die erforderlichen Module importieren const fs = require('fs'); const archiver = require('archiver'); __dirname + "/hello.zip");// Speichern Sie das komprimierte Paket im Verzeichnis des aktuellen Projekts und das komprimierte Paket heißt test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Stellen Sie die Komprimierungsstufe ein//Der dritte Schritt besteht darin, eine Pipeline-Verbindung herzustellen archive.pipe(output);//Der vierte Schritt besteht darin, die angegebene Datei zu komprimieren archive.append(fs.createReadStream(__dirname + '/hello .txt'), { name: 'hello.txt'});//Dateistream archive.append('index.html', {name: 'index.html'});//Dateipfad archive.append(Buffer .from("Dies sind Daten im Pufferformat"), {name: 'buffer.txt'});// Pufferobjekt archive.append("String direkt übergeben", {name: 'string.txt'}) ;// String/ / Der fünfte Schritt besteht darin, die Komprimierung abzuschließen archive.finalize();Hinweis: Der zweite Parameter {name: 'hello.txt'} von archive.append() dient dazu, die entsprechende Datei im komprimierten Paket umzubenennen.
Wenn Sie mehrere Dateien komprimieren möchten, rufen Sie einfach die Methode archive.append() auf, um Dateien anzuhängen. Diese zusätzlichen Dateien werden dem komprimierten Paket hinzugefügt. Zum Beispiel:
// Im ersten Schritt die erforderlichen Module importieren const fs = require('fs'); const archiver = require('archiver'); __dirname + "/hello.zip");// Speichern Sie das komprimierte Paket im Verzeichnis des aktuellen Projekts und das komprimierte Paket heißt test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Stellen Sie die Komprimierungsstufe ein//Der dritte Schritt besteht darin, eine Pipeline-Verbindung herzustellen archive.pipe(output);//Der vierte Schritt besteht darin, mehrere Dateien in ein komprimiertes Paket zu komprimieren archive.append('index.html', {name: ' index.html'});archive.append('hello.js', {name: 'hello.js'});archive.append('hello.html', {name: 'hello.html' });archive .append('db.json', {name: 'db.json'});// Der fünfte Schritt besteht darin, die Komprimierung abzuschließen archive.finalize();Wenn Sie ein Verzeichnis komprimieren möchten, müssen Sie dazu archive.directory() verwenden. Die API lautet wie folgt:
// Packen und komprimieren Sie das angegebene Verzeichnis in ein komprimiertes Paket und benennen Sie es in „Neues Unterverzeichnis“ um. Alle Dateien im Unterverzeichnis befinden sich weiterhin im Verzeichnis „Neues Unterverzeichnis“ und nicht im Stammverzeichnis des komprimierten Pakets archive.directory( 'subdir /', 'new-subdir');// Packen und komprimieren Sie alle Dateien im angegebenen Verzeichnis in ein komprimiertes Paket. Diese Dateien befinden sich im Stammverzeichnis des komprimierten Pakets und nicht im Unterverzeichnis archive.directory(' Unterverzeichnis/', false);Das vollständige Beispiel lautet wie folgt:
// Im ersten Schritt die erforderlichen Module importieren const fs = require('fs'); const archiver = require('archiver'); __dirname + "/hello.zip");// Speichern Sie das komprimierte Paket im Verzeichnis des aktuellen Projekts und das komprimierte Paket heißt test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Stellen Sie die Komprimierungsstufe ein//Der dritte Schritt besteht darin, eine Pipeline-Verbindung herzustellen archive.pipe(output);//Der vierte Schritt besteht darin, das Verzeichnis in ein komprimiertes Paket zu komprimieren archive.directory('public/', ' new-public'); archive.directory('demo/', false);// Der fünfte Schritt besteht darin, die Komprimierung abzuschließen archive.finalize();Empfohlenes Lernen: „nodejs-Video-Tutorial“
Im Folgenden finden Sie Einzelheiten zur Verwendung des Archivers in NodeJS. Weitere Informationen finden Sie in anderen verwandten Artikeln auf dieser Website.