ho finalmente capito, con l'aiuto di @generalhenry (vedi commenti sulla questione) e
come accennato nei commenti, abbiamo bisogno di comprimere la cartella in due fasi:
Converti la cartella in un file .tar
comprimere il file .tar
Al fine di eseguire il primo passo, avevo bisogno di due moduli: Node.JS
npm install tar
npm install fstream
Il primo ci permette di creare file .tar
. Puoi avere accesso al codice sorgente qui https://github.com/isaacs/node-tar
Il secondo modulo di nodo ci aiuterà a leggere una cartella e scrivere un file. Riguardo al modulo base fs
node.js, non so se sia possibile leggere una directory (non sto parlando di ottenere tutti i file in un array, usando fs.readdir
, ma gestendo tutti i file e la loro organizzazione in cartelle).
Quindi, quando converto la cartella nel file .tar
, posso comprimerla utilizzando Gzip()
di Zlib
.
Ecco il codice finale:
var fstream = require('fstream'),
tar = require('tar'),
zlib = require('zlib');
fstream.Reader({ 'path': 'path/to/my/dir/', 'type': 'Directory' }) /* Read the source directory */
.pipe(tar.Pack()) /* Convert the directory to a .tar file */
.pipe(zlib.Gzip()) /* Compress the .tar file */
.pipe(fstream.Writer({ 'path': 'compressed_folder.tar.gz' })); /* Give the output file name */
Questo mi ha aiutato a comprimere un'intera cartella utilizzando node.js
più 2 attività:
Come si può vedere, ci è una mancanza di documentazione sul modulo tar
. Spero che questo sarà migliorato presto poiché i due esempi che sono stati forniti parlano di come estrarre il contenuto dal file .tar
.
Ho utilizzato il modulo fstream
per aiutarmi a gestire la directory di origine. Questo può essere bypassato usando fs
? Non lo so (per favore, commenta se hai un'idea).
Zlib è solo una compressione, si desidera tar una cartella, quindi comprimila, l'intera cosa tar.gz, prova https://github.com/isaacs/node-tar – generalhenry
Oh, ho capito! Quindi, ho bisogno di farlo in due passi: 1/Convertire la cartella in un file '.tar', quindi 2/Comprimi il file' .tar' in '.tar.gz' usando Zlib. Il modulo 'node-tar' non è molto ben documentato, hai risorse aggiuntive? – htaidirt
Ho dato un'occhiata, il migliore che ho trovato è https://github.com/cthackers/adm-zip – generalhenry