我有一个glob模式列表:
var assets = [
'../projects.a/dir1/dir2/file1.js',
'../projects.b/dir1/dir2/file2.js',
'./app/scripts/dir1/dir2/module.js'
];
我想创建一个任务,将所有由这些模式表示的文件复制到我的dest文件夹并保留结构。例如,在我的dest文件夹中,我想要以下内容:
'dest/projects.a/dir1/dir2/file1.js',
'dest/projects.b/dir1/dir2/file2.js',
'dest/app/scripts/dir1/dir2/module.js'
我构建了以下任务:
gulp.task('scripts', ['clean'], function() {
return gulp.src(assets)
.pipe(gulp.dest('dest'));
});
问题在于我得到了#dest;' dest'只有一级目录。例如:\
'dest/dir2/file1.js',
'dest/dir2/file2.js',
'dest/dir2/module.js'
知道出了什么问题吗?我怎么解决呢? 使用gulp处理来自不同文件夹的资产的常用方法是什么?
更新
查看Looking for way to copy files in gulp and rename based on parent directory,我尝试将{base: './'}
设置为gulp.src(assets, {base: './'})
的参数,但我将当前目录下的文件嵌套在另一个文件夹下。我没有得到所需的行为。有什么想法吗?
答案 0 :(得分:0)
您可以单独处理不在当前目录下的文件。您可以使用单独的任务,或使用event-stream
加入流:
var projectAssets = [
'../projects.a/dir1/dir2/file1.js',
'../projects.b/dir1/dir2/file2.js'
];
var assets = [
'./app/scripts/dir1/dir2/module.js'
];
var es = require('event-stream');
gulp.task('scripts', ['clean'], function() {
return es.merge(gulp.src(assets, {base: './'}), gulp.src(projectAssets, {base: '../'}))
.pipe(gulp.dest('dest'));
});