Maintain Directory Structure while Globbing
If you are planning to read a few files/folders from a directory and maintain their relative path, you need to pass {base: '.'} as the second argument to gulp.src().
For example, if you have a directory structure like

and want to read only a few files say
[ 'index.html',
'css/**',
'js/**',
'lib/**',
'images/**',
'plugin/**'
]In this case, Gulp will read all the sub-folders of (say) css folder and arrange them relative to your root folder and they will no longer be the sub-folder of css. The output after globbing would look like

If you want to maintain the structure, you need to pass {base: '.'} to gulp.src(). Like
gulp.task('task', function () {
gulp.src(['index.html',
'css/**',
'js/**',
'lib/**',
'images/**',
'plugin/**'
], {base: '.'})
.pipe(operation1())
.pipe(operation2());
});And the input to your operation1() will be a folder structure like
