寻找的方式在一口基于父目录的文件复制和重命名寻找的方式在一口基于父目录的文件复制和重命名(Looki

2019-06-17 09:47发布

对于每个模块我有一个需要被复制到build目录,并正在寻找一种方式,以尽量减少这种重复的代码一些文件:

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'));

对这样的事情:

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

显然,上述不工作,那么,有没有办法做到这一点,或者说已经这样做了的故宫?

谢谢

Answer 1:

最好的办法是配置你的base采购文件时,就像这样:

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

这告诉gulp使用目录模块作为起始点,用于确定相对路径。

(此外,您还可以使用/**/*.js如果您要包括所有的JS文件...)



Answer 2:

不是答案,而是适用于在搜索结果中这一问题的外观。

要复制文件/文件夹一饮而尽

gulp.task('copy', () => gulp
  .src('index.js')
  .pipe(gulp.dest('dist'))
);


Answer 3:

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

为我工作!



Answer 4:

使用了保留输入目录树将被保留。

.pipe(gulp.dest(function(file) {
    var src = path.resolve(SRC_FOLDER);
    var final_dist = file.base.replace(src, '');
    return DIST_FOLDER + final_dist;
}))

利用这一点,你可以把在src: .src(SRC_FOLDER + '/**/*.js')

其他人的答案不工作对我来说(比如使用base:src() },因为一些插件扁平化目录树。



Answer 5:

并行复制文件

gulp.task('copy', gulp.parallel(
() =>  gulp.src('*.json').pipe(gulp.dest('build/')),
() =>  gulp.src('*.ico').pipe(gulp.dest('build/')),
() =>  gulp.src('img/**/*').pipe(gulp.dest('build/img/')),
)
);


文章来源: Looking for way to copy files in gulp and rename based on parent directory
标签: node.js gulp