使用 gulp 将文件复制到多个目录
Copy a file to several directories with gulp
我想使用 gulp 将特定文件 style.css
复制到多个目录 css 文件夹,例如:
Project
- directory 1
- css
- directory 2
- css
- directory 3
- css
- directory 4
- css
- style.css
据我了解,gulp只能复制一个文件或几个文件到一个目录而不是几个目录.
gulp.task('copy', function() {
return gulp.src('project/style.css')
.pipe(gulp.dest('project'));
});
考虑到我知道可以编写多个 gulp.dest
但我需要一种动态方式来处理多个目录。
那么有什么解决办法吗?
这是我给你的建议。你可以尝试这样的事情:
gulp.task('copy-multiple-dest', function () {
return gulp.src('./project/style.css')
.pipe(gulp.dest('./directory 1'))
.pipe(gulp.dest('./directory 2'))
.pipe(gulp.dest('./directory 3'));
});
更新:(不确定这是否是好的做法)
gulp.task('multiples', function () {
var directories = ['./directory 1', './directory 2'];
for (var i = 0; i < directories.length; i++) {
gulp.src('./project/style.css')
.pipe(gulp.dest(directories[i]));
}
});
您可以创建一个 单个 源,在其上添加对 .pipe(gulp.dest(...))
的调用,然后 return 结果:
var gulp = require("gulp");
gulp.task('default', function () {
var dests = ['./out1', './out2', './out3'];
var stream = gulp.src('./project/style.css');
for (var i = 0; i < dests.length; i++) {
stream = stream.pipe(gulp.dest(dests[i]));
}
return stream;
});
不确定这是最好的方法,但您可以通过节点的 fs 读取您的目录,并可选择使用正则表达式过滤它们,然后通过 reduce
使用管道将每个结果名称作为目标
var fs = require("fs");
fs.readdirSync('project').filter(function(fname) {
return fname.match(/directory\s\d+/);
}).reduce(function(stream, dest){
return stream.pipe(gulp.dest('project/'+dest+'/css'));
}, gulp.src('project/style.css'));
我想使用 gulp 将特定文件 style.css
复制到多个目录 css 文件夹,例如:
Project
- directory 1
- css
- directory 2
- css
- directory 3
- css
- directory 4
- css
- style.css
据我了解,gulp只能复制一个文件或几个文件到一个目录而不是几个目录.
gulp.task('copy', function() {
return gulp.src('project/style.css')
.pipe(gulp.dest('project'));
});
考虑到我知道可以编写多个 gulp.dest
但我需要一种动态方式来处理多个目录。
那么有什么解决办法吗?
这是我给你的建议。你可以尝试这样的事情:
gulp.task('copy-multiple-dest', function () {
return gulp.src('./project/style.css')
.pipe(gulp.dest('./directory 1'))
.pipe(gulp.dest('./directory 2'))
.pipe(gulp.dest('./directory 3'));
});
更新:(不确定这是否是好的做法)
gulp.task('multiples', function () {
var directories = ['./directory 1', './directory 2'];
for (var i = 0; i < directories.length; i++) {
gulp.src('./project/style.css')
.pipe(gulp.dest(directories[i]));
}
});
您可以创建一个 单个 源,在其上添加对 .pipe(gulp.dest(...))
的调用,然后 return 结果:
var gulp = require("gulp");
gulp.task('default', function () {
var dests = ['./out1', './out2', './out3'];
var stream = gulp.src('./project/style.css');
for (var i = 0; i < dests.length; i++) {
stream = stream.pipe(gulp.dest(dests[i]));
}
return stream;
});
不确定这是最好的方法,但您可以通过节点的 fs 读取您的目录,并可选择使用正则表达式过滤它们,然后通过 reduce
使用管道将每个结果名称作为目标var fs = require("fs");
fs.readdirSync('project').filter(function(fname) {
return fname.match(/directory\s\d+/);
}).reduce(function(stream, dest){
return stream.pipe(gulp.dest('project/'+dest+'/css'));
}, gulp.src('project/style.css'));