Di nodejs, pengarsip digunakan untuk mengompresi dan mengemas beberapa file ke dalam paket terkompresi dalam format zip atau format tar; pengarsip adalah modul yang dapat mengimplementasikan fungsi pengemasan lintas platform. Format pengemasannya adalah zip dan tar " pernyataan Instal modul ini sebelum digunakan.
Lingkungan pengoperasian artikel ini: Sistem Windows 10, nodejs versi 12.19.0, komputer Dell G3.
Terkadang kita perlu mengompres dan mengemas beberapa file ke dalam paket terkompresi dalam format zip atau format tar, dan kita mungkin juga perlu mengemas direktori. Di Node.js, Anda dapat menggunakan pengarsip paket pihak ketiga untuk melakukan operasi.
Archiver adalah modul yang dapat mewujudkan fungsi pengemasan lintas platform di nodejs. Ia dapat membuat paket zip dan tar.
Instal modul arsip sebelum digunakan.
Kodenya adalah sebagai berikut:
npm instal pengarsipPerkenalan:
// Karena file perlu dibaca, modul fs diperlukan, dan const fs = require('fs'); const archiver = require('archiver');Penggunaan dasarnya adalah sebagai berikut:
// Langkah pertama, impor modul yang diperlukan const fs = require('fs'); const archiver = require('archiver'); // Langkah kedua, buat aliran yang dapat ditulis untuk menulis data const output = fs.createWriteStream ( __dirname + "/hello.zip");// Simpan paket terkompresi ke direktori proyek saat ini, dan paket terkompresi diberi nama test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Mengatur tingkat kompresi//Langkah ketiga adalah membuat sambungan pipa archive.pipe(output);//Langkah keempat adalah mengompresi file yang ditentukan var stream = fs.createReadStream(__dirname + "/hello. txt");// Baca hello.txtarchive.append(stream, {name: 'hello.txt'});//Langkah kelima adalah menyelesaikan kompresi archive.finalize();Setelah kode berhasil dijalankan, paket terkompresi bernama hello.zip akan dibuat di direktori tempat proyek berada. Paket terkompresi berisi file terkompresi hello.txt.
File terkompresi dapat dioperasikan menggunakan archive.append() dan archive.file().
API untuk mengompresi satu file adalah sebagai berikut:
//Tambahkan file ke paket terkompresi dan baca data melalui aliran yang dapat ditulisi. Const file1 = __dirname + '/file1.txt';archive.append(fs.createReadStream(file1), { name: 'file1.txt ' } );//Tambahkan file ke paket terkompresi dan tambahkan file dengan menulis string ke file archive.append('string cheese!', { name: 'file2.txt' });//Tambahkan File ke paket terkompresi paket, tambahkan file melalui Buffer data const buffer3 = Buffer.from('buff it!');archive.append(buffer3, { name: 'file3.txt' });// Tambahkan file ke paket terkompresi paket, langsung meneruskan jalur file archive.file('file1.txt', { name: 'file4.txt' });Contoh lengkapnya adalah sebagai berikut:
// Langkah pertama, impor modul yang diperlukan const fs = require('fs'); const archiver = require('archiver'); // Langkah kedua, buat aliran yang dapat ditulis untuk menulis data const output = fs.createWriteStream ( __dirname + "/hello.zip");// Simpan paket terkompresi ke direktori proyek saat ini, dan paket terkompresi diberi nama test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Mengatur tingkat kompresi//Langkah ketiga adalah membuat koneksi pipa archive.pipe(output);//Langkah keempat adalah mengompresi file yang ditentukan archive.append(fs.createReadStream(__dirname + '/hello .txt'), { nama: 'hello.txt'});//Arsip aliran file.append('index.html', {nama: 'index.html'});//Jalur file archive.append(Buffer .from("Ini adalah Data dalam format Buffer"), {name: 'buffer.txt'});// Buffer object archive.append("Langsung memasukkan string", {name: 'string.txt'}) ;// String/ / Langkah kelima adalah menyelesaikan kompresi arsip.finalize();Catatan: Parameter kedua {name: 'hello.txt'} dari archive.append() adalah mengganti nama file terkait dalam paket terkompresi.
Jika Anda ingin mengompres banyak file, cukup panggil metode archive.append() untuk menambahkan file tambahan ini akan ditambahkan ke paket terkompresi. Misalnya:
// Langkah pertama, impor modul yang diperlukan const fs = require('fs'); const archiver = require('archiver'); // Langkah kedua, buat aliran yang dapat ditulis untuk menulis data const output = fs.createWriteStream ( __dirname + "/hello.zip");// Simpan paket terkompresi ke direktori proyek saat ini, dan paket terkompresi diberi nama test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Mengatur tingkat kompresi//Langkah ketiga adalah membuat koneksi pipeline archive.pipe(output);//Langkah keempat adalah mengompresi beberapa file ke dalam paket terkompresi archive.append('index.html', {nama: 'index.html'});archive.append('hello.js', {nama: 'hello.js'});archive.append('hello.html', {name: 'hello.html' });archive .append('db.json', {name: 'db.json'});// Langkah kelima adalah menyelesaikan kompresi archive.finalize();Jika Anda ingin mengompresi direktori, Anda perlu menggunakan archive.directory() untuk melakukannya. APInya adalah sebagai berikut:
// Kemas dan kompres direktori yang ditentukan ke dalam paket terkompresi, dan ganti namanya menjadi subdir baru, dan semua file di direktori subdir masih berada di direktori subdir baru, bukan di direktori root dari paket terkompresi archive.directory( 'subdir /', 'subdir baru');// Kemas dan kompres semua file di direktori yang ditentukan ke dalam paket terkompresi, dan file-file ini berada di direktori root dari paket terkompresi, bukan di subdirektori archive.directory(' subdir/', salah);Contoh lengkapnya adalah sebagai berikut:
// Langkah pertama, impor modul yang diperlukan const fs = require('fs'); const archiver = require('archiver'); // Langkah kedua, buat aliran yang dapat ditulis untuk menulis data const output = fs.createWriteStream ( __dirname + "/hello.zip");// Simpan paket terkompresi ke direktori proyek saat ini, dan paket terkompresi diberi nama test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Mengatur tingkat kompresi//Langkah ketiga adalah membuat koneksi pipa archive.pipe(output);//Langkah keempat adalah mengompresi direktori menjadi paket terkompresi archive.directory('public/', ' new-public'); archive.directory('demo/', false);// Langkah kelima adalah menyelesaikan kompresi archive.finalize();Pembelajaran yang disarankan: "tutorial video nodejs"
Di atas adalah detail cara menggunakan archiver di nodejs. Untuk informasi lebih lanjut, harap perhatikan artikel terkait lainnya di situs ini!