使用Gulp从多个目录移动文件也会复制目录

使用Gulp从多个目录移动文件也会复制目录,gulp,Gulp,我正在设置gulp,将不同模块中的所有html文件移动到一个视图文件夹中。在模块文件夹内,每个模块文件夹具有相同的结构 modulename/client/views/anyFile.html 我已经编写了吞咽任务“移动html” gulp.task('move-html', function(){ return gulp.src('./modules/*/client/views/*.html') .pipe(htmlmin({ collapseWhitespace: true

我正在设置gulp,将不同模块中的所有html文件移动到一个视图文件夹中。在模块文件夹内,每个模块文件夹具有相同的结构

modulename/client/views/anyFile.html

我已经编写了吞咽任务“移动html”

gulp.task('move-html', function(){
    return gulp.src('./modules/*/client/views/*.html')
    .pipe(htmlmin({ collapseWhitespace: true }))
    .pipe(gulp.dest('./public/views'));
});
我希望所有模块中的所有html文件都复制到./public/views,但我发现整个模块结构都被复制了

预期: index.html

实际产量: 应用程序 |-客户 |-观点 |-index.html

我猜这与模块后面的星号有关,但找不到任何替代方法的答案


当我在gulp.src中使用文件名时,它可以正常工作,例如../modules/app/client/views/*.html

您是对的,
*
前面的路径部分在这里很重要。它将形成路径的基础。但那不是你想要的。您希望删除包含并遵循
*
的部分路径。最简单的方法是使用一个包来删除指定的父目录

在您的情况下,您可以这样简单地将它们全部删除:

.pipe(flatten())  
只保留文件名本身,然后您可以将其放入您想要的任何目录中。因此:

const flatten = require("gulp-flatten");

gulp.task('move-html', function(){
  return gulp.src('./modules/**/client/views/*.html')
    .pipe(htmlmin({ collapseWhitespace: true }))

    .pipe(flatten())

    .pipe(gulp.dest('./public/views'));
});

现在,您将得到您想要的
/public/views/*.html

非常感谢您的快速回复,这正是我所需要的。如果您觉得答案有用且准确,请不要忘记接受答案。谢谢(单击复选标记)完成。再次感谢你,巴德