我知道这听起来像是一个很简单的问题,但是我已经苦苦挣扎了很长时间,没有任何实际结果。
我正在尝试从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
我要防止它们被复制吗?
谢谢
答案 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'))
});
答案 1 :(得分:0)
您应同时使用此!src/**/_*
'和此!src/assets/_*/**/*
尝试一下:
gulp.task('copy', () => {
return gulp.src(['src/**/*', '!src/**/_*/', '!src/assets/_*/**/*'])
.pipe(gulp.dest('./www'))
});
希望这对您有所帮助。