如何吞下多个文件夹并排除一些文件?

时间:2016-10-30 10:28:50

标签: gulp zip

我是使用Gulp的初学者,我不太了解什么是可能的,什么不是。我想实现以下目标:

我对1个项目的设置:

.dist
├──客户-1 │├──活动-1 ││├──项目-a
│││├──css(文件夹)
│││├──js(文件夹)
│││├──图像(文件夹)
│││├──index.html
│││└──preview.html

(每个项目都有相同的结构。我有多个客户端,不同的名称和不同的广告系列。)

!!我想为每个项目制作一个包含所有文件和文件夹的zip文件,但文件 preview.html 除外。如果名称可以是项目的名称,那就更好了。

.dist
├──客户-1 │├──活动-1 ││├──项目-a
│││├── css(文件夹)
│││├── js(文件夹)
│││├──图像(文件夹)
│││├── index.html
│││├── preview.html
│││└── project-a.zip (新)

如果我解压缩zip文件,我想看到以下内容(不在文件夹中):

  • css(文件夹和内容)
  • js(文件夹和内容)
  • 图像(文件夹和内容)
  • 的index.html

如何设置Gulp任务为我做这个拉链?

1 个答案:

答案 0 :(得分:1)

您可以在 gulp-zip 的帮助下完成此操作。

如果要从压缩中排除特定文件或文件夹,可以使用正则表达式。 检查一次,Excluding files/directories from Gulp task

见下文:

const gulp = require('gulp');
const zip = require('gulp-zip');

gulp.task('default', () => {
  return gulp.src([ 'js/**/*.js', '!js/**/*.min.js' ]) // Here I'm excluding .min.js files
    .pipe(zip('archive.zip'))
    .pipe(gulp.dest('dist'));
});

如果要排除或包含任何特定文件夹或文件,也可以使用正则表达式执行此操作。比方说,如果你想从 zip 中排除以下划线('_')符号开头的文件夹,你会这样做,

gulp.src('js/[^_]*/*.js'); // Here I'm excluding folders that start with '_' symbol

就像我们在 javascript 中写的一样,同样的正则表达式也适用于此。 希望这会有所帮助:)