You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js tar模块创建压缩包时如何添加-C选项去除绝对路径?

Node.js tar模块实现类似tar -C的路径移除效果

要解决打包时保留完整路径的问题,你可以通过cwd参数实现和Linux中tar -C相同的效果,或者手动指定条目路径,以下是两种可行方案:

方案一:使用cwd参数(推荐,对应tar -C)

将cwd设置为目标文件夹test的父目录,然后仅传入test/作为打包路径,这样tar模块会以cwd为基准路径,打包时只会保留test及其内部内容,不会带上级路径:

tar.create({
    gzip: true,
    file: 'test.tar.gz',
    cwd: '../result/1670341264809/' // 切换到test文件夹的父目录
}, ['test/']).then(_ => {
    // 打包完成后的操作
});

方案二:手动指定条目路径

如果不想切换工作目录,可以将打包条目从字符串改为对象,通过name指定在压缩包内的路径,path指向实际文件路径:

tar.create({
    gzip: true,
    file: 'test.tar.gz'
}, [{
    name: 'test/', // 压缩包内显示的路径
    path: '../result/1670341264809/test/' // 本地实际文件路径
}]).then(_ => {
    // 打包完成后的操作
});

原理说明

你原代码中直接传入完整相对路径时,tar模块会将整个路径作为压缩包内的文件路径。通过cwd切换工作目录,相当于告诉tar模块:"从这个目录开始打包",这样传入的test/就会被当作相对路径,最终压缩包内只会保留test文件夹及其内容。

内容的提问来源于stack exchange,提问作者mkHun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:05:29