Допустим, мы имеем следующую структуру папок:Глоток: сохранение структуры папок на месте назначения для отдельных файлов
rootDirectory
│
│
├──a
│ ├──a.txt
│
├──b
│ ├──a
│ ├──a.txt
│
├──c.txt
также, скажем, нам нужно написать задачу глотка, который будет принимать a.txt
в папке a
и c.txt
; выполните некоторые манипуляции с ними, а затем подключите их в каталог build
. Я хочу, чтобы файлы, скопированные в папку сборки, сохраняли свою структуру каталогов в папке build
(и я не хочу, чтобы файлы, которые не должны обрабатываться задачей, чтобы попасть в папку build
), вот так:
rootDirectory
│
│
├──a
│ ├──a.txt
│
├──b
│ ├──a
│ ├──a.txt
│
├──c.txt
│
├──build
│
├──a
│ ├──a.txt
│
├──c.txt
Теперь вот что меня озадачивает. Если я указываю пути к конкретным файлам:
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));
});
тогда я выравнивать структуру папок в каталоге build
.
Если, однако, я использую шаблон универсализации:
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));
});
затем сохраняется структура папок, но эта подстановка картина будет также предназначаться b/a.txt
, которые я не хочу.
Есть ли способ достичь того, что я описываю в Gulp? В основном, говоря Gulp: «Вот, возьмите этот файл, сделайте все, что вам нужно, и поместите его в другой путь, сохраняя структуру папок, начиная с этого корневого пути»? Помимо, в частности, отрицание путей глобирования, которые я не хочу сопоставлять?
это может помочь: https://github.com/gulpjs/gulp/issues/151 – sobolevn
@sobolevn: вы имеете в виду, используя 'base' параметр? ('gulp.src ([" blah-blah "], {base:". "})')? Мне нужно попробовать это; выглядит многообещающим. – azangru
Yay, опция 'base' передана как второй аргумент gulp.src! Спасибо! – azangru