gulp src-排除在执行任务时复制文件夹

时间:2018-07-20 13:37:21

标签: gulp

我知道这听起来像是一个很简单的问题,但是我已经苦苦挣扎了很长时间,没有任何实际结果。

我正在尝试从gulp中使用watch命令复制某些文件夹。 我已经跟随this example(还有其他人),但它的行为似乎并不符合预期。

基本上,文件夹结构如下:

- src
| - assets
| -  -  _scripts/*
| -  -  _styles/*
| -  -  fonts/*
| -  -  images/*
| - index.html
| - favicon.ico

我要运行的任务如下:

gulp.task('copy', () => {
 return gulp.src(['src/**/*', '!src/assets/_*/**/*'])
   .pipe(gulp.dest('./www'))
});

我想复制src/./src/assets/_styles之外的./src/assets/_scripts内的所有文件,但是当任务运行时,这两个文件夹被复制为空文件夹(它们不应't,如上一篇文章所述。)

为将来参考,以上文章对此进行了说明:

---> for this folder structure:

file.txt
folder
folder/file.txt
folder/_subfolder
folder/_subfolder/file.txt
folder/subfolder
folder/subfolder/file.txt
_folder
_folder/file.txt
_folder/_subfolder
_folder/_subfolder/file.txt
_folder/subfolder
_folder/subfolder/file.txt

---> when using this task:

gulp.task('default', function() {
  return gulp.src([
      'src/**/*',         //select all files
      '!src/**/_*/',      //exclude folders starting with '_'
      '!src/**/_*/**/*',  //exclude files/subfolders in folders starting with '_'
    ])
    .pipe(gulp.dest('dist'));
});

---> the result will be:

file.txt
folder
folder/file.txt
folder/subfolder
folder/subfolder/file.txt

gulp的版本如下:

  

CLI版本3.9.1

     

本地版本3.9.1

我要防止它们被复制吗?

谢谢

2 个答案:

答案 0 :(得分:1)

尝试:

gulp.task('copy', () => {
  return gulp.src(['src/**/*.*', '!src/assets/_*/**/*.*'])
    .pipe(gulp.dest('dist'))
});

[编辑]:您还可以将nodir选项与原始glob一起使用:

gulp.task('copy', () => {
  // return gulp.src(['src/**/*.*', '!src/assets/_*/**/*.*'])
  return gulp.src(['src/**/*', '!src/assets/_*/**'], {nodir: true})
    .pipe(gulp.dest('dist'))
});

glob options including nodir

答案 1 :(得分:0)

您应同时使用此!src/**/_*'和此!src/assets/_*/**/*

尝试一下:

gulp.task('copy', () => {
    return gulp.src(['src/**/*', '!src/**/_*/', '!src/assets/_*/**/*'])
    .pipe(gulp.dest('./www'))
});

希望这对您有所帮助。