你需要包括 base 选项 到src,它将以您希望的方式保留文件结构:
base
var filesToMove = [ './_locales/**/*.*', './icons/**/*.*', './src/page_action/**/*.*', './manifest.json' ]; gulp.task('move',['clean'], function(){ // the base option sets the relative root for the set of files, // preserving the folder structure gulp.src(filesToMove, { base: './' }) .pipe(gulp.dest('dist')); });
此外,如果您在项目的根目录中拥有所有这些源文件,那么您可能会遇到麻烦。
的 如果 强> 你可以,我建议你用一个 src/ 文件夹和移动 所有 特定于应用程序的文件。这使维护更容易前进,并防止特定于构建的文件与特定于应用程序的文件混淆。
src/
如果你这样做,那么只需替换所有出现的 ./ 同 src/ 在上面的例子中。
./
原始问题仅针对目标 的 目录 强> (a.k.a.文件夹)在其中 gulp.src ,即 gulp.src(['_locales', ... 在这个例子中, _locales 是一个名字 的 目录 强> 。
gulp.src
gulp.src(['_locales', ...
_locales
接受的答案使用了 glob 图案 在它的 gulp.src 达到目标 的 档 强> 那些目录中的任何地方,即 gulp.src(['./_locales/**/*.*', ... ,(注意 双星号 ,和 filename.extension 星号)。接受的答案有效......
glob
gulp.src(['./_locales/**/*.*', ...
... 但接受的答案只强调了 base 选项 :
你需要包括 的 base 选项 强> 到src ...
我试验并发现:
严格来说,没有必要使用 base 选择实现OP所要求的:“......并移动适当的 的 档 强> 到干净的目录。“ base 选项 不 确实保留了 文件夹+文件 的 结构体 强> (如接受的答案所述),但是 base 选项是 的 不够 强> 将文件作为OP移动 的 问 强> 。保留文件夹+文件结构可能就是OP 的 预计 强> ,所以接受的答案是好的,但......
只是重申一下 的 不 强> 移动文件,就是这样 glob 图案:
双星号( .../**/... )递归搜索所有子文件夹和子文件夹的子文件夹等。
.../**/...
Filename.extension星号( .../*.* )发现 的 档 强> 所有 名 , 和所有 扩展 。 的 所以我觉得这部分值得最重视! 强>
.../*.*
接受的答案改变了别的东西;它添加了一个前缀 ./ 传递给每个路径的参数 gulp.src 。我认为这是不必要/多余的;如果没有 ./ ,(如在OP问题中),相对于当前目录解析路径 - 导致相同的行为 。但也许这是好的做法,明确与 ./
如果我错了,请告诉我