mam w końcu dostał to, z pomocą @generalhenry (patrz komentarze na pytanie) i
jak wspomniano w komentarzach, musimy skompresować folder, w dwóch etapach:
Konwersja folderu w pliku .tar
skompresować plik .tar
Aby wykonać pierwszy krok, potrzebowałem dwa node.js moduły:
npm install tar
npm install fstream
Pierwszy z nich pozwala nam tworzyć .tar
plików. Możesz mieć dostęp do kodu źródłowego tutaj https://github.com/isaacs/node-tar
Drugi moduł węzłowy pomoże nam odczytać folder i napisać plik. Jeśli chodzi o podstawowy modułnode.js, nie wiem, czy można odczytać katalog (nie mówię o uzyskiwaniu wszystkich plików w tablicy, używając fs.readdir
, ale obsługuję wszystkie pliki i ich organizację w folderach).
Następnie, po przekonwertowaniu folderu na plik .tar
, mogę skompresować go za pomocą Gzip()
z Zlib
.
Oto ostateczny kod:
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 */
To pomogło mi skompresować cały folder przy użyciu node.js
2 więcej rzeczy:
Jak widać, istnieje jest brak dokumentacji na module tar
. Mam nadzieję, że wkrótce nastąpi poprawa, ponieważ dwa dostarczone przykłady mówią o tym, jak wyodrębnić zawartość z pliku .tar
.
Użyłem modułu fstream
, aby pomóc mi obsłużyć katalog źródłowy. Czy można ominąć to za pomocą fs
? Nie wiem (proszę, skomentuj, jeśli masz pomysł).
Zlib jest po prostu commpression, chcesz tar folder, a następnie skompresować go, całą rzecz tar.gz, spróbuj https://github.com/isaacs/node-tar – generalhenry
Oh, rozumiem! Muszę to zrobić w dwóch krokach: 1/Konwertuj folder na plik '.tar', a następnie 2/Kompresuj plik' .tar' do '.tar.gz' używając Zlib. Moduł 'node-tar' nie jest dobrze udokumentowany, czy masz jakieś dodatkowe zasoby? – htaidirt
Spojrzałem, najlepiej znalazłem https://github.com/cthackers/adm-zip – generalhenry