我終於知道了,與@generalhenry的幫助(請參閱有關問題的評論)和
如在評論中提到的,我們需要在文件夾中的兩個步驟壓縮:
轉換的文件夾爲.tar
文件
的壓縮文件.tar
爲了完成第一步,我需要兩個Node.js的模塊:
npm install tar
npm install fstream
第一個允許我們創建.tar
文件。您可以在這裏訪問源代碼https://github.com/isaacs/node-tar
第二個節點模塊將幫助我們讀取文件夾並寫入文件。關於基本的fs
node.js模塊,我不知道是否可以讀取一個目錄(我並不是說要使用fs.readdir
來獲取數組中的所有文件,而是要處理文件夾中的所有文件及其組織)。
然後,當我將文件夾轉換爲.tar
文件時,我可以使用Gzip()
的Zlib
對其進行壓縮。
下面是最終代碼:
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 */
這幫助我瞭解如何使用Node.js
2更多的事情來壓縮整個文件夾:
Zlib只是壓縮,你想tar一個文件夾然後壓縮它,整個tar.gz的東西,試試https://github.com/isaacs/node-tar – generalhenry 2013-03-20 17:29:15
哦,我明白了!所以,我需要分兩步進行:1 /將文件夾轉換爲.tar文件,然後使用Zlib將.tar文件壓縮爲.tar.gz。 'node-tar'模塊沒有很好的文檔記錄,你有沒有額外的資源? – htaidirt 2013-03-20 17:42:12
我看了一下,我發現的最好的是https://github.com/cthackers/adm-zip – generalhenry 2013-03-20 18:17:03