假设我们有以下文件夹结构:
rootDirectory
?
?
???a
? ???a.txt
?
???b
? ???a
? ???a.txt
?
???c.txt
Run Code Online (Sandbox Code Playgroud)
同时,假设我们需要写一个咕嘟咕嘟的任务,将采取a.txt中a的文件夹,c.txt; 对它们执行一些操作,然后将它们传递到build目录中.我想要的是在build文件夹中复制的文件将其目录结构保存在build文件夹中(我不希望任务不应该处理的build文件进入文件夹),如下所示:
rootDirectory
?
?
???a
? ???a.txt
?
???b
? ???a
? ???a.txt
?
???c.txt
?
???build
?
???a
? ???a.txt
?
???c.txt
Run Code Online (Sandbox Code Playgroud)
现在,这就是困扰我的.如果我指定特定文件的路径:
gulp.task('foo', function(){
var files = [
path.join(__dirname, 'c.txt'),
path.join(__dirname, 'a/a.txt')
];
gulp.src(files)
.pipe(gulp.dest(path.join(__dirname, build));
});
Run Code Online (Sandbox Code Playgroud)
然后我将展平build目录中的文件夹结构.
但是,如果我使用globbing模式:
gulp.task('foo', function(){
var files = [
path.join(__dirname, '**/c.txt'),
path.join(__dirname, '**/a/a.txt')
];
gulp.src(files)
.pipe(gulp.dest(path.join(__dirname, build));
});
Run Code Online (Sandbox Code Playgroud)
然后保留文件夹结构,但这个globbing模式也将目标b/a.txt,我不想要.
有没有办法实现我在Gulp中描述的内容?基本上,告诉Gulp:"在这里,拿这个文件,用这个做任何你需要的东西,把它放在另一个路径上,保持文件夹结构从这个根路径开始"?除了明确否定我不想匹配的通路径之外?
为了保留层次结构,您应该将{base:"."}参数传递给gulp.src.像这样的东西:
gulp.task('foo', function(){
var files = [
path.join(__dirname, 'c.txt'),
path.join(__dirname, 'a/a.txt')
];
gulp.src(files, {base: '.'})
.pipe(gulp.dest(path.join(__dirname, build));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1716 次 |
| 最近记录: |