我终于知道了,与@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