En nodejs, el archivador se usa para comprimir y empaquetar algunos archivos en paquetes comprimidos en formato zip o tar; el archivador es un módulo que puede implementar funciones de empaquetado en todas las plataformas. Los formatos de empaquetado son zip y tar. " declaración Instale este módulo antes de usarlo.
El entorno operativo de este artículo: sistema Windows 10, versión nodejs 12.19.0, computadora Dell G3.
A veces necesitamos comprimir y empaquetar algunos archivos en paquetes comprimidos en formato zip o tar, y es posible que también necesitemos empaquetar directorios. En Node.js, puede utilizar el archivador de paquetes de terceros para realizar operaciones.
Archiver es un módulo que puede realizar funciones de empaquetado multiplataforma en nodejs. Puede crear paquetes zip y tar. Es un módulo de terceros relativamente fácil de usar.
Instale el módulo de archivo antes de usarlo.
El código es el siguiente:
npm instalar archivadorIntroducción:
// Dado que el archivo debe leerse, se requiere el módulo fs y también se debe importar const fs = require('fs'); const archiver = require('archiver');El uso básico es el siguiente:
// El primer paso, importar los módulos necesarios const fs = require('fs'); const archiver = require('archiver'); // El segundo paso, crear una secuencia de escritura para escribir datos const output = fs.createWriteStream ( __dirname + "/hello.zip");// Guarde el paquete comprimido en el directorio del proyecto actual y el paquete comprimido se denomina test.zipconst archive = archiver('zip', {zlib: {level: 9}} );//Establecer el nivel de compresión//El tercer paso es establecer una conexión de canalización archive.pipe(output);//El cuarto paso es comprimir el archivo especificado var stream = fs.createReadStream(__dirname + "/hello. txt");// Leer hello.txtarchive.append(stream, {name: 'hello.txt'});// El quinto paso es completar la compresión archive.finalize();Una vez que el código se ejecute correctamente, se generará un paquete comprimido llamado hello.zip en el directorio donde se encuentra el proyecto. El paquete comprimido contiene el archivo comprimido hello.txt.
Los archivos comprimidos se pueden operar usando archive.append() y archive.file().
La API para comprimir un solo archivo es la siguiente:
//Agregue un archivo al paquete comprimido y lea los datos a través de una secuencia de escritura Const file1 = __dirname + '/file1.txt';archive.append(fs.createReadStream(file1), { name: 'file1.txt ' } );//Agregue un archivo al paquete comprimido y agregue el archivo escribiendo la cadena en el archivo archive.append('string cheese!', { name: 'file2.txt' });//Agregue un archivo al paquete comprimido paquete, agregue el archivo a través de Buffer data const buffer3 = Buffer.from('buff it!');archive.append(buffer3, { name: 'file3.txt' });// Agregue un archivo al paquete comprimido, pase directamente la ruta del archivo archive.file('file1.txt', {name: 'file4.txt' });El ejemplo completo es el siguiente:
// El primer paso, importar los módulos necesarios const fs = require('fs'); const archiver = require('archiver'); // El segundo paso, crear una secuencia de escritura para escribir datos const output = fs.createWriteStream ( __dirname + "/hello.zip");// Guarde el paquete comprimido en el directorio del proyecto actual y el paquete comprimido se denomina test.zipconst archive = archiver('zip', {zlib: {level: 9}} );//Establecer el nivel de compresión//El tercer paso es establecer una conexión de canalización archive.pipe(output);//El cuarto paso es comprimir el archivo especificado archive.append(fs.createReadStream(__dirname + '/hello .txt'), { nombre: 'hello.txt'});//Secuencia de archivos archive.append('index.html', {nombre: 'index.html'});//Ruta del archivo archive.append(Buffer .from("Estos son datos en formato de búfer"), {nombre: 'buffer.txt'});// Objeto de búfer archive.append("Pasar directamente la cadena", {nombre: 'string.txt'}) ;// String/ / El quinto paso es completar la compresión archive.finalize();Nota: El segundo parámetro {nombre: 'hello.txt'} de archive.append() es cambiar el nombre del archivo correspondiente en el paquete comprimido.
Si desea comprimir varios archivos, simplemente llame al método archive.append() para agregar archivos. Estos archivos adicionales se agregarán al paquete comprimido. Por ejemplo:
// El primer paso, importar los módulos necesarios const fs = require('fs'); const archiver = require('archiver'); // El segundo paso, crear una secuencia de escritura para escribir datos const output = fs.createWriteStream ( __dirname + "/hello.zip");// Guarde el paquete comprimido en el directorio del proyecto actual y el paquete comprimido se denomina test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Establecer el nivel de compresión//El tercer paso es establecer una conexión de canalización archive.pipe(output);//El cuarto paso es comprimir varios archivos en un paquete comprimido archive.append('index.html', {nombre: 'index.html'});archive.append('hola.js', {nombre: 'hola.js'});archive.append('hola.html', {nombre: 'hola.html' });archive .append('db.json', {name: 'db.json'});// El quinto paso es completar la compresión archive.finalize();Si desea comprimir un directorio, debe utilizar archive.directory() para hacerlo. La API es la siguiente:
// Empaqueta y comprime el directorio especificado en un paquete comprimido y le cambia el nombre a nuevo subdirectorio, y todos los archivos en el directorio subdirectorio todavía están en el directorio nuevo subdirectorio, no en el directorio raíz del paquete comprimido archive.directory( 'subdir /', 'new-subdir');// Empaqueta y comprime todos los archivos en el directorio especificado en un paquete comprimido, y estos archivos están en el directorio raíz del paquete comprimido, no en el subdirectorio archive.directory(' subdirectorio/', falso);El ejemplo completo es el siguiente:
// El primer paso, importar los módulos necesarios const fs = require('fs'); const archiver = require('archiver'); // El segundo paso, crear una secuencia de escritura para escribir datos const output = fs.createWriteStream ( __dirname + "/hello.zip");// Guarde el paquete comprimido en el directorio del proyecto actual y el paquete comprimido se denomina test.zipconst archive = archiver('zip', {zlib: {level: 9}} );//Establecer el nivel de compresión//El tercer paso es establecer una conexión de canalización archive.pipe(output);//El cuarto paso es comprimir el directorio en un paquete comprimido archive.directory('public/', ' new-public'); archive.directory('demo/', false);// El quinto paso es completar la compresión archive.finalize();Aprendizaje recomendado: "videotutorial de nodejs"
Los anteriores son los detalles de cómo usar el archivador en nodejs. Para obtener más información, preste atención a otros artículos relacionados en este sitio.