寻找在gulp中复制文件并根据父目录重命名的方法

chr*_*ris 91 node.js gulp

对于每个模块,我有一些文件需要复制到构建目录,我正在寻找一种方法来最小化重复的代码:

gulp.src('./client/src/modules/signup/index.js')
  .pipe(gulp.dest('./build/public/js/signup'));

gulp.src('./client/src/modules/admin/index.js')
  .pipe(gulp.dest('./build/public/js/admin'));
Run Code Online (Sandbox Code Playgroud)

这样的事情:

gulp.src('./client/src/modules/(.*)/index.js')
  .pipe(gulp.dest('./build/public/js/$1'));
Run Code Online (Sandbox Code Playgroud)

显然上面的方法不起作用,有没有办法做到这一点,或者已经这样做的npm?

谢谢

Kir*_*eck 211

不是答案,但适用于此问题在搜索结果中的外观.

在gulp中复制文件/文件夹

gulp.task('copy', () => gulp
  .src('index.js')
  .pipe(gulp.dest('dist'))
);
Run Code Online (Sandbox Code Playgroud)

  • @jinglesthula对于那些通过搜索引擎得出这个问题的人来说,无论搜索引擎的工作情况如何,这都是一项非常有用的服务.我很感激. (9认同)
  • 您必须返回流以让Gulp知道任务何时完成. (4认同)
  • 嗯...我的gulp说这个任务完成了,但输出文件不存在. (2认同)
  • 我很困惑,为什么一个说"不是答案"的答案比回答这个问题的公认答案有更多的赞成.我不确定我们是否应该把答案弄得一团糟,让搜索引擎做一些特别的事情而不是提供问题的答案.我认为这是搜索引擎的工作,可以使他们在抓取网站时获得的内容变得有用.只需我0.02美元 (2认同)

Ove*_*ous 131

最好的方法是配置base何时采购文件,如下所示:

gulp.src('./client/src/modules/**/index.js', {base: './client/src/modules'})
  .pipe(gulp.dest('./build/public/js/'));
Run Code Online (Sandbox Code Playgroud)

这告诉gulp我们使用modules目录作为确定相对路径的起点.

(另外,/**/*.js如果要包含所有JS文件,可以使用...)

  • 必须有一种更动态的方法 - 当src文件来自2个不同的目录并且你想在dest中保存它们的目录时呢? (6认同)

小智 5

return gulp.src('./client/src/modules/(.*)/index.js')  
  .pipe(gulp.dest('./build/public/js/$1'));
Run Code Online (Sandbox Code Playgroud)

为我工作!

  • ...所以有人可以重写它以便_does_按原样工作,所以人们来到这个页面寻找那段确切的代码片段实际上可以使用它吗? (2认同)