使用Gulp无法移动完整源文件夹目录树至目标位置求助
解决Gulp仅复制根目录文件的问题
你的问题出在两个地方:glob匹配模式错误,以及异步任务处理不当。
1. Glob模式错误
你写的src/**.*只会匹配所有子目录中带有扩展名的文件,但实际上需要覆盖src下所有文件(包括无扩展名的)和所有子目录内容,正确的匹配模式应该是src/**/*:
src/:指定源目录根路径**/:递归匹配所有层级的子目录*:匹配对应目录下的所有文件
2. 异步任务处理问题
原代码里直接调用cb(),但gulp.src的文件流是异步执行的,Gulp进程会在回调触发后直接结束,导致部分文件还没完成复制就终止了。你可以通过返回流的方式让Gulp自动管理异步流程,或者在流结束后再调用回调。
修正后的Gulpfile
方式一:返回流(推荐写法)
var gulp = require('gulp') function defaultTask() { console.log("Moving all folders/files in src folder"); return gulp.src(["src/**/*"]) .pipe(gulp.dest('../server/public')); } exports.default = defaultTask
方式二:通过回调处理异步
var gulp = require('gulp') function defaultTask(cb) { console.log("Moving all folders/files in src folder"); gulp.src(["src/**/*"]) .pipe(gulp.dest('../server/public')) .on('end', cb); // 等待文件流全部完成后再触发回调 } exports.default = defaultTask
修改后运行Gulp,就能完整复制src目录下的所有文件和子目录结构到目标路径了。
内容的提问来源于stack exchange,提问作者user2771365
相关产品推荐
相关产品推荐

