使用Gulp将文件导入特定目录的zip压缩文件

3

我有两个文件流

var chromefiles = gulp.src(['./src/chrome/*', './external/jquery.js',      './icon/*']);

var userscriptfiles = gulp.src(['./src/meta.js', './src/jquery.extensions.js', './src/*.js'])
.pipe(concat('user.js'));

我将这些文件合并成一个zip文件。

return merge(chromefiles, userscriptfiles)
.pipe(zip('overpress.zip'))
.pipe(gulp.dest('./'));

我想把"chromefiles"中的所有文件放到名为"chrome"的子目录中,将"userscriptfiles"中的文件放到zip文件中名为"userscript"的目录中。 我该如何实现这个目标?
overpress.zip
   |
   |-userscript
   |     |-user.js
   |
   |-chrome
        |-jquery.js
        |-icon.png
        |-someotherfile.js     
1个回答

8
使用gulp-renamechromefilesuserscriptfiles流上,将各自的目录添加到每个文件路径的前面。
var rename = require('gulp-rename');

gulp.task('zip', function() {
  var chromefiles = gulp.src([
      './src/chrome/*',
      './external/jquery.js',
      './icon/*'
    ])
    .pipe(rename(function(file) {
      file.dirname = 'chrome/' + file.dirname;
    }));

  var userscriptfiles = gulp.src([
      './src/meta.js', 
      './src/jquery.extensions.js', 
      './src/*.js'
    ])
    .pipe(concat('user.js'))
    .pipe(rename(function(file) {
      file.dirname = 'userscript/' + file.dirname;
    }));

  return merge(chromefiles, userscriptfiles)
    .pipe(zip('overpress.zip'))
    .pipe(gulp.dest('./'));
});

这很完美。谢谢! - Erik Moldtmann
我曾经遇到过类似的问题,你的答案帮了我很大的忙。 - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接