我需要使用 nodejs 创建一个tar未包含在父目录中的文件。
例如,这里是文件系统:
/tmp/mydir
/tmp/mydir/Dockerfile
/tmp/mydir/anotherfile
Run Code Online (Sandbox Code Playgroud)
我想要做的是相当于这个:
cd /tmp/mydir
tar -cvf archive.tar *
Run Code Online (Sandbox Code Playgroud)
因此,当我提取archive.tar,Dockerfile将最终出现在我执行命令的同一目录中。
我试过tar.gz和其他一些,但所有的例子都在压缩整个目录,而不仅仅是文件。
我这样做是为了可以利用 Docker REST API 发送构建。
使用现代模块node-tar,您可以创建一个 .tar 文件,如下所示:
tar.create(
{ file: 'archive.tar' },
['/tmp/mydir']
).then(_ => { .. tarball has been created .. })
Run Code Online (Sandbox Code Playgroud)
其他答案中引用的tar.gz模块已被弃用。
使用tar.gz模块。这是示例代码
var targz = require('tar.gz');
var compress = new targz().compress('/path/to/compress', '/path/to/store.tar.gz',
function(err){
if(err)
console.log(err);
console.log('The compression has ended!');
});
Run Code Online (Sandbox Code Playgroud)
该软件包现已弃用。检查@Kelin提供的答案。