使用 gulp 创建 tar 档案

2024-02-13

我正在使用 gulp-tar 创建一个 tar 文件...如何添加顶级文件夹,以便当用户运行时tar -xzf myArchive.tar它解压到特定的文件夹中。

这是我的代码:

gulp.task('prod', ['min', 'gittag'], function() {

  //copy all files under /server into a zip file
    gulp.src('../server/**/*')
    .pipe(tar('xoserver' + '-'+ gittag +'.tar'))
    .pipe(gzip())
    .pipe(gulp.dest('../prod'));
});

上面创建了一个tar.zip文件没问题,但我必须小心添加一个-C <folder>提取时,否则文件将提取到当前文件夹。

[edited]

我在这里想做的是生成以下格式的 tarballxoserver-alpha-d414ddf.tar.gz其中,当用tar xvf将创建一个文件夹xoserver-alpha-d414ddf并解压其下的所有文件。本质上,我试图在打包文件上方添加新的文件夹名称。 如果我添加一个base选项,解压到的文件夹只是server

[ANSWER]

感谢 ddprrt 提供了一个很好的答案。我正在复制最终代码,以防其他人想要使用类似的策略将 git 标签嵌入到 tarball 的名称中进行分发/测试。

gulp.task('gittag', function(cb) {   // generate the git tag 
    git.exec({args : 'branch -v'}, function (err, stdout) {
      var lines = stdout.split('\n');
      for (var l in lines) {
        if (lines[l][0] == '*') {
          var words = lines[l].split(/\s+/);
          gittag = words[1]+ '-' + words[2];
          console.log('Gittag is %s', gittag);
          break;
        }
      }
      cb();
    });
});

gulp.task('min', ['runbmin', 'template', 'vendor']); // generate min files

gulp.task('prod', ['min', 'gittag'], function() { // create tarball
  //copy all files under /server into a zip file
    return gulp.src('../server/**/*')
    .pipe(rename(function(path) {
        path.dirname = 'server-' + gittag + '/' + path.dirname;
    }))
    .pipe(tar('xoserver-'+gittag+'.tar'))
    .pipe(gzip())
    .pipe(gulp.dest('../prod'));
});

这就是base选项是为了.

gulp.task('prod', ['min', 'gittag'], function() {
    return gulp.src('../server/**/*', { base: '../server/' })
        .pipe(tar('xoserver' + '-'+ gittag +'.tar'))
        .pipe(gzip())
        .pipe(gulp.dest('../prod'));
});

有了它,你可以告诉 gulp 在处理你收到的 glob 时要包含哪些路径。

顺便提一句。不要忘记返回流或在任务中调用完成回调。帮助 gulp 编排您的构建管道

至于第二个问题,你可以使用gulp重命名 https://www.npmjs.com/package/gulp-rename任务更改虚拟文件所在的目录。会是这样的

.pipe(rename(function(path) {
     path.dirname = 'whatever/' + path.dirname
}));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 gulp 创建 tar 档案 的相关文章

  • Gulp 复制空目录

    In my gulp构建我已经创建了一个运行的任务after所有的编译 丑化和缩小都已经发生 此任务只是复制所有内容src进入dest早期任务尚未触及 处理的目录 我遇到的一个小问题是 这会导致目录中出现空目录dest目录 有没有办法告诉g
  • 在 VS2015 中构建后执行 Gulp.js 任务

    我有一个基本的 Asp Net 5 站点 它使用 Gulp JS 任务来清理 复制和缩小 CSS 和 JS 文件 在任务运行程序资源管理器中运行这些任务时 一切都很好 旧脚本被删除 新脚本被复制 文件被缩小 我希望在 VS2015 中自动执
  • laravel 5 - css 文件未在资产清单中定义?

    我收到 laravel 5 的错误消息 我不明白 Next exception ErrorException with message File build css all css not defined in asset manifest
  • Python tarfile 进度输出?

    我使用以下代码来提取 tar 文件 import tarfile tar tarfile open sample tar gz tar extractall tar close 但是 我想以目前正在提取哪些文件的形式密切关注进度 我怎样才能
  • 如何使用 Visual Studio 的 Node Tools 调试 Gulp 任务?

    我最近安装了适用于 Visual Studio 的 NodeJS 工具 https github com Microsoft nodejstools其中宣称支持 VS 中的 Node 环境 值得注意的是 它能够从 IDE 设置调试断点 我不
  • 使用 ruby​​ 解压缩(zip、tar、tag.gz)文件

    我想解压很多 zip 文件 是否有模块或脚本可以检查 zip 文件的格式并对其进行解压缩 这应该适用于Linux 我不关心其他操作系统 要从 tar gz 文件中提取文件 您可以使用随 Ruby 分发的包中的以下方法 require rub
  • 打开 PHPStorm 项目时可以自动运行终端命令吗?

    我有一个 Gulp 工作流程 我希望在 PHPStorm 中打开我的项目时自动启动该工作流程 这可能吗 Not possible at the moment https youtrack jetbrains com issue WEB 11
  • 阻止 gulp 更改 shell/cmd 标题名称

    当 gulp 被调用时 它会将我的 cmd windows 标题更改为 gulp 我希望窗口名称保持原样 我知道我可以使用https www npmjs com package gulp shell https www npmjs com
  • 如何使用 gulp webpack-stream 生成正确命名的文件?

    目前我们正在使用Webpack https webpack github io 对于我们的模块加载器 以及Gulp http gulpjs com 对于其他一切 sass gt css 以及开发 生产构建过程 我想将 webpack 的东西
  • 缩小并捆绑 NodeJS 项目

    没有找到关于这个主题的太多信息 是否有任何工具 gulp 用于缩小和捆绑nodejs服务器项目 包括其node module依赖项 我遇到了无法运行的情况npm install在生产机器上 我的 可执行 大小限制为最大 20 MB 你应该看
  • Angular js gulp sourcemap ngannonate 和 babel 中 JavaScript 堆内存不足

    我在我的 Angular JS 项目中使用 es6 语法 但运行时会抛出错误gulp build 在 github 上搜索 但是有些人说这是由于 gulp uglify 导致的错误 而有些人说这是 babel 问题 其他人说这是 ng an
  • -bash: gulp: 在 Mac 中找不到命令

    我尝试在 mac 中安装 gulp 如下所示 Is iMac itop npm root Users itop node modules Is iMac itop npm config set prefix usr local Is iMa
  • 保存到服务器后,隐藏字符“\u0”添加到文件中

    我正在使用 Apache 服务器为 Web 开发网站提供服务 这样我就可以不断保存和编辑文件 我使用 Gulp for Sass 来连接和丑化 css 和 js 文件 一个月前 我的 js 和 css 文件遇到问题 似乎在文件下面添加了随机
  • 有没有等效的 gulp 插件来执行“grunt Bower”?

    With grunt 我可以使用命令grunt bower 由 提供grunt bower requirejs https github com ck86 gulp bower files 自动生成RequireJS我本地的配置文件bowe
  • 找不到模块“lodash”

    今天我尝试了解有关 Google Web Starter Kit 的更多信息 因此我关注了这些说明 https developers google com web fundamentals getting started web start
  • Gulp Watch 和 Nodemon 冲突

    简而言之 最近开始使用 Gulp 从 Grunt 转换 并且尝试使用 Gulp 的默认监视任务 不是来自 npm 的 gulp watch 用于 SASS JS HTML 和 gulp nodemon 来自 npm 来重新启动 Expres
  • 无需编译的 ES6 单元测试

    我无法找到任何 Mocha 或任何其他通过 Gulp 直接在 ES6 代码上运行的单元测试框架的示例 没有 Babel Webpack 等 我找到了一个在浏览器中使用 ES6 代码运行 Mocha 的示例 经过一些修改 但它不是自动化的 有
  • tar.gz 和 tgz 是同一个东西吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了 tgz 文件tar czvf filecommand then 我最终得到了一个 tgz 文件 我想知道它和tar gz 之间的
  • 角度2多次错误TS2300:重复的标识符

    系统配置 ubuntu 14 04 节点 v gt v5 6 0 npm v gt 3 7 1 打字最新版本 不知道如何获取版本详细信息 第一次使用 angular2 时 我的文件夹样本 服务器结构如下 server js server t
  • 少吞咽然后缩小任务

    我必须在 gulp 中执行 2 个步骤 减少 css 文件格式 缩小生成的 css 文件 这是我的吞咽文件 var gulp require gulp watch require gulp watch less require gulp l

随机推荐

  • 向 ggplot2 添加小刻度和标签

    必须有一种更简单的方法来使用 ggplot2 在图中添加自定义刻度和标签 而不是像论坛中的一些答案那样创建自定义函数 这是我的代码 data lt data frame WS Spd WVT c 0 5 1 2 4 2 0 3 C E c
  • python如何比较字符串和整数[重复]

    这个问题在这里已经有答案了 在下面的代码中 这是一个用于对元素进行排序的简单算法 我的问题是如何在内部比较字符串以及解释器如何知道这些字符串将放置在整数之后 a 22 66 54 11 16 2 5 b a 3 2 1 gt gt gt f
  • 如何在kafka中初始化kafka ConsumerRecords进行测试

    我正在为 kafka 消费者组件和模拟编写测试用例kafkaConsumer poll 它返回的实例ConsumerRecords
  • 设置 md-grid-list 样式

    我正在使用 Angular Material 网格列表来显示大约 500 1000 个项目 我在根据自己的喜好设计它时遇到了一些麻烦 这是网格列表现在的样子
  • Cassandra中删除表或截断表哪个更好

    我们有一个用例 我们需要每天使用 Cassandra 中的当前数据重新创建一个表 为此 我们应该使用 drop table 还是 truncate table 哪个会更有效率 我们不希望数据被备份等 谢谢 安库尔 我认为对于几乎所有情况 截
  • Windows 8 Phone 客户端证书 HTTPS 身份验证

    我正在尝试使用我正在开发的 Windows 8 Phone 应用程序中的客户端证书访问安全的 HTTPS 服务器 这根本不起作用 这让我尝试从标准 Web 浏览器访问 HTTPS 服务器 但它也不起作用 我不知道 Internet Expl
  • 从 SonarQube 删除项目

    有谁知道如何从 SonarQube 服务器删除项目 谢谢 罗南 您有 2 种方法可以删除项目 如果您是项目的管理员 则可以从其配置操作中将其删除 gt 参见 项目管理 文档页面中的 删除项目 https docs sonarqube org
  • 如何从 SQL Server 中的 TOP 中排除 LEFT JOINed 表?

    假设我有两个书籍表和两个对应版本的表 我有一个查询如下 SELECT TOP 10 FROM SELECT hbID hbTitle hbPublisherID hbPublishDate hbedID hbedDate FROM hard
  • Typescript 和 React 组件接受 TextArea 和 Input 的 onChange

    我是打字稿新手 我正在尝试创建一个输入组件 如果它收到type text 它呈现一个input如果它收到type textarea 它呈现 你明白了 一个textarea 问题是 当我在代码中使用该组件时 打字稿会抱怨onChange 似乎
  • 与我的自定义 Streambuf 类一起使用时,istream::tellg() 返回 -1?

    我正在尝试创建一个istream直接从原始内存缓冲区读取 我在这里的另一篇文章中找到了一个很好的方法 class membuf public basic streambuf
  • 在 C 中编码多管道

    我正在尝试在 C 中为我的 shell 实现多管道 我所拥有的只是一个管道函数 用于管道 b 但不是 a 乙 C int c 2 int returnv pid t id pipe c pid fork 0 if pid dup2 c 1
  • 从 werkzeug 导入安全导入 werkzeug VS

    我目前的理解 基于这些答案 one https stackoverflow com questions 9439480 from import vs import two https stackoverflow com questions
  • 我需要在 PHP 中转义反斜杠吗?

    我需要在 PHP 中转义反斜杠吗 echo Application Models User Prints Application Models User echo Application Models User Same output ec
  • 如何在nhibernate中进行子查询?

    我需要对子集合执行子查询 但无法让它工作 我试过这个 Task tAlias null List
  • 我们如何在 Grails 中迁移/更新数据库架构?

    我们使用 Grails 已经有一段时间了 我的团队负责人提出了一些关于 Grails ORM GORM 的问题 一旦我们进入生产环境 我们如何维护数据库模式 我们可以使用 Grails 更新数据库架构吗 如果更新架构 更改是否会自动反映 框
  • 如何判断我的 IE 是否是 64 位? (就此而言,Java 也是如此吗?)

    网络上已经有数以百万计的问题涉及如何判断操作系统是否是 64 位 但不知道 IE 和 或 Java 运行时是否是 64 位 一些背景 我安装了 64 位 Win 7 IE 会自动从 CD 中安装 我没有下载IE 我确实下载了Java运行时
  • 我们如何在 Comparator.comparing 中传递变量字段/方法名称

    我有一个Report String name Date date int score 班级 我希望能够使用新的 java 8 语法对任何成员变量的报告列表进行排序 所以java 8提供了这个新的 list sort Comparator c
  • Android studio 虚拟设备未加载

    我有 4GB 内存 android studio 虚拟设备显示 ANDROID 所以加载是无限的 它没有结束 我已经等太久了 可能是什么问题 无论我使用什么应用程序 您尝试过使用 Genymotion 吗 它比普通虚拟设备好数百倍 这里有一
  • Ruby - 将目录添加到 $LOAD_PATH - 它有什么作用?

    这实际上是关于这个问题的一个问题 将目录添加到 LOAD PATH Ruby https stackoverflow com questions 837123 adding a directory to load path ruby 将目录
  • 使用 gulp 创建 tar 档案

    我正在使用 gulp tar 创建一个 tar 文件 如何添加顶级文件夹 以便当用户运行时tar xzf myArchive tar它解压到特定的文件夹中 这是我的代码 gulp task prod min gittag function