寻找方法来复制文件,并根据父目录进行重命名
对于每个模块,我都有一些需要复制到构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'));
很显然,上述不起作用,所以有没有办法做到这一点,或者一个已经这样做的NPM?
谢谢
最好的方法是在采购文件时configuration您的base
,如下所示:
gulp.src('./client/src/modules/**/index.js', {base: './client/src/modules'}) .pipe(gulp.dest('./build/public/js/'));
这告诉大家使用模块目录作为确定相对path的起点。
(另外,如果你想包含所有的JS文件,你可以使用/**/*.js
)
不是答案,而是适用于这个问题在search结果中的出现。
在gulp中复制文件/文件夹
gulp.task('copy', () => gulp .src('index.js') .pipe(gulp.dest('dist')) );
return gulp.src('./client/src/modules/(.*)/index.js') .pipe(gulp.dest('./build/public/js/$1'));
为我工作!
用于保存input目录树将被保留。
.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')
. .src(SRC_FOLDER + '/**/*.js')
。
其他人的答案没有为我工作(如使用base:
在src()
},因为一些插件平坦的目录树。