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

时间:2014-01-19 23:55:02

标签: 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'));

这样的事情:

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

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

由于

5 个答案:

答案 0 :(得分:211)

不是答案,但适用于此问题在搜索结果中的显示。

在gulp中复制文件/文件夹

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

答案 1 :(得分:131)

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

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

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

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

答案 2 :(得分:5)

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

为我工作!

答案 3 :(得分:3)

将保留用于保留输入目录树的用途。

.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(),因为某些插件会压平目录树。

答案 4 :(得分:0)

并行复制文件

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