Gulp 如何压缩多个文件夹并排除一些文件?

Gulp 如何压缩多个文件夹并排除一些文件?,gulp,zip,Gulp,Zip,我是Gulp的初学者,我不知道什么是可能的,什么不是。我希望实现以下目标: 1项目的我的设置: .dist ├── 客户-1 │ ├── 活动-1 │ │ ├── 项目a │ │ │ ├── css(文件夹) │ │ │ ├── js(文件夹) │ │ │ ├── 图像(文件夹) │ │ │ ├── index.html │ │ │ └── preview.html (每个项目都有相同的结构。我有多个客户,名称不同,活动不同

我是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(新)

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

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

我如何设置Gulp任务来为我进行此压缩?

您可以在的帮助下完成此操作

如果要从压缩中排除特定的文件或文件夹,可以使用正则表达式。 检查一下这个

见下文:

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'));
});
如果要排除或包含任何特定的文件夹或文件,也可以使用regex。比方说,如果您想从zip中排除以下划线(“')符号开头的文件夹,您可以这样做

gulp.src('js/[^_]*/*.js'); // Here I'm excluding folders that start with '_' symbol
就像我们在javascript中编写的一样,同样的正则表达式也可以在这里使用。
希望这有帮助:)

+=可能是hello@SvenSchoenung,也可能是包含通配符文件夹的特定文件夹?你是否想知道如何做到这一点,或者只是想知道你的目标是否不可能?我想知道这个目标是否以及如何实现@亨利好吧,我想是的。正如@SvenSchoenung所说的,你需要
吞下拉链
,并且(在对链接问题的回答中)你将使用
!否定
glob以排除
preview.html
s。要单独完成每个项目,请使用。要在项目后命名zip,您可以执行以下操作(这里,
gulp flatMap
被称为它的旧名称,
gulp foreach
)。谢谢,这是解决方案的一部分,但我仍然希望以特定“深度”的特定文件为目标是一次压缩所有项目还是一次执行一个项目?Cinnakotla最好一次为一个活动中的每个项目创建一个压缩…:-)。因为如果它能压缩所有的项目,我每次都会添加更多的项目,这只会增加时间。