No nodejs, o arquivador é usado para compactar e empacotar alguns arquivos em pacotes compactados no formato zip ou tar. O arquivador é um módulo que pode implementar funções de empacotamento entre plataformas. Os formatos de empacotamento são zip e tar. " instrução Instale este módulo antes de usar.
O ambiente operacional deste artigo: sistema Windows 10, nodejs versão 12.19.0, computador Dell G3.
Às vezes, precisamos compactar e empacotar alguns arquivos em pacotes compactados em formato zip ou tar, e também podemos precisar empacotar diretórios. No Node.js, você pode usar o arquivador de pacotes de terceiros para realizar operações.
Archiver é um módulo que pode realizar a função de empacotamento multiplataforma em nodejs. Ele pode criar pacotes zip e tar. É um módulo de terceiros relativamente fácil de usar.
Instale o módulo de arquivo antes de usar.
O código é o seguinte:
arquivador de instalação npmIntrodução:
// Como o arquivo precisa ser lido, o módulo fs é necessário e const fs = require('fs');O uso básico é o seguinte:
// A primeira etapa, importe os módulos necessários const fs = require('fs'); const archiver = require('archiver'); // A segunda etapa, crie um fluxo gravável para gravar dados const output = fs.createWriteStream ( __dirname + "/hello.zip");// Salve o pacote compactado no diretório do projeto atual, e o pacote compactado será denominado test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Definir o nível de compactação//A terceira etapa é estabelecer uma conexão de pipeline archive.pipe(output);//A quarta etapa é compactar o arquivo especificado var stream = fs.createReadStream(__dirname + "/hello. txt");// Leia hello.txtarchive.append(stream, {name: 'hello.txt'});//A quinta etapa é concluir a compactação archive.finalize();Após a execução bem-sucedida do código, um pacote compactado chamado hello.zip será gerado no diretório onde o projeto está localizado. O pacote compactado contém o arquivo compactado hello.txt.
Arquivos compactados podem ser operados usando archive.append() e archive.file().
A API para compactar um único arquivo é a seguinte:
//Adicione um arquivo ao pacote compactado e leia os dados por meio de um fluxo gravável. Const file1 = __dirname + '/file1.txt';archive.append(fs.createReadStream(file1), { name: 'file1.txt ' } );//Adicione um arquivo ao pacote compactado e anexe o arquivo escrevendo a string no arquivo archive.append('string cheese!', { name: 'file2.txt' });//Adicione um arquivo ao pacote compactado pacote, anexe o arquivo por meio de Buffer data const buffer3 = Buffer.from('buff it!');archive.append(buffer3, { name: 'file3.txt' });// Adicione um arquivo ao pacote compactado package, passe diretamente o caminho do arquivo archive.file('file1.txt', { name: 'file4.txt' });O exemplo completo é o seguinte:
// A primeira etapa, importe os módulos necessários const fs = require('fs'); const archiver = require('archiver'); // A segunda etapa, crie um fluxo gravável para gravar dados const output = fs.createWriteStream ( __dirname + "/hello.zip");// Salve o pacote compactado no diretório do projeto atual, e o pacote compactado será denominado test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Definir o nível de compactação //A terceira etapa é estabelecer uma conexão de pipeline archive.pipe(output);//A quarta etapa é compactar o arquivo especificado archive.append(fs.createReadStream(__dirname + '/hello .txt'), { nome: 'hello.txt'});//Fluxo de arquivo archive.append('index.html', {nome: 'index.html'});//Caminho do arquivo archive.append(Buffer .from("Estes são dados no formato Buffer"), {name: 'buffer.txt'});// Objeto Buffer archive.append("Passe diretamente a string", {name: 'string.txt'}) ;// String/ / O quinto passo é completar a compactação archive.finalize();Nota: O segundo parâmetro {name: 'hello.txt'} de archive.append() é renomear o arquivo correspondente no pacote compactado.
Se você deseja compactar vários arquivos, basta chamar o método archive.append() para anexar arquivos. Esses arquivos adicionais serão adicionados ao pacote compactado. Por exemplo:
// A primeira etapa, importe os módulos necessários const fs = require('fs'); const archiver = require('archiver'); // A segunda etapa, crie um fluxo gravável para gravar dados const output = fs.createWriteStream ( __dirname + "/hello.zip");// Salve o pacote compactado no diretório do projeto atual, e o pacote compactado será denominado test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Definir o nível de compactação//A terceira etapa é estabelecer uma conexão de pipeline archive.pipe(output);//A quarta etapa é compactar vários arquivos em um pacote compactado archive.append('index.html', {nome: 'index.html'});archive.append('hello.js', {nome: 'hello.js'});archive.append('hello.html', {nome: 'hello.html' });archive .append('db.json', {name: 'db.json'});// O quinto passo é completar a compactação archive.finalize();Se você deseja compactar um diretório, você precisa usar archive.directory() para fazer isso. A API é a seguinte:
// Compacte e compacte o diretório especificado em um pacote compactado e renomeie-o para new-subdir, e todos os arquivos no diretório subdir ainda estarão no diretório new-subdir, não no diretório raiz do pacote compactado archive.directory( 'subdir /', 'new-subdir');// Compacta e compacta todos os arquivos no diretório especificado em um pacote compactado, e esses arquivos estão no diretório raiz do pacote compactado, não no subdiretório archive.directory(' subdiretório/', falso);O exemplo completo é o seguinte:
// A primeira etapa, importe os módulos necessários const fs = require('fs'); const archiver = require('archiver'); // A segunda etapa, crie um fluxo gravável para gravar dados const output = fs.createWriteStream ( __dirname + "/hello.zip");// Salve o pacote compactado no diretório do projeto atual, e o pacote compactado será denominado test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//Definir o nível de compactação//A terceira etapa é estabelecer uma conexão de pipeline archive.pipe(output);//A quarta etapa é compactar o diretório em um pacote compactado archive.directory('public/', ' new-public'); archive.directory('demo/', false);// O quinto passo é completar a compactação archive.finalize();Aprendizagem recomendada: "tutorial em vídeo nodejs"
Acima estão os detalhes de como usar o arquivador no nodejs. Para obter mais informações, preste atenção a outros artigos relacionados neste site!