我需要使用nodejs来创建一个不包含在父目录中的tar
文件。
例如,这是文件系统:
/tmp/mydir
/tmp/mydir/Dockerfile
/tmp/mydir/anotherfile
我期待的事情就是相当于:
cd /tmp/mydir
tar -cvf archive.tar *
因此,当我提取archive.tar
时,Dockerfile
将最终出现在我执行命令的同一目录中。
我已经尝试了tar.gz
和其他几个,但所有示例都在压缩整个目录,而不仅仅是文件。
我这样做,所以我可以利用Docker REST API发送构建。
答案 0 :(得分:2)
使用现代模块node-tar,您可以创建一个.tar文件,如下所示:
tar.create(
{ file: 'archive.tar' },
['/tmp/mydir']
).then(_ => { .. tarball has been created .. })
不建议使用其他答案中引用的 tar.gz 模块。
答案 1 :(得分:1)
使用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!');
});
如需更多选项,请访问documentation page。
答案 2 :(得分:1)
构造函数的第二个参数作为属性传递给tar模块。
var TarGz = require('tar.gz');
var compressor = new TarGz({}, {fromBase: true});
这将使用创建没有顶级目录的存档。
编辑:这在node-tar.gz
中没有记录,但拉取请求现已合并:https://github.com/alanhoff/node-tar.gz#tar-options