gulp.task("projectTest", () => {
return gulp.src("./src/projects/**/*.css")
// minify pipe, etc.
.pipe(gulp.dest('dist/projects'))
});
From https://gulpjs.com/docs/en/api/concepts#glob -base :
База glob - иногда называемая glob parent - это сегмент пути перед любыми специальными символами в строке glob. Таким образом, база шарика /src/js/**.js
равна /src/js/
. Все пути, которые соответствуют глобу, гарантированно разделяют базу глоба - этот сегмент пути не может быть переменным.
Виниловые экземпляры, генерируемые src()
, создаются с базой глобуса, установленной как их свойство base
. При записи в файловую систему с помощью dest()
, base
будет удален из пути вывода для сохранения структур каталогов.
Это немного сбивает с толку, как написано. В моем коде часть перед globstar **
- это base
. Так что ./src/projects/
является базой. И структура каталогов в base
всегда сохраняется - но это не будет включать projects
(потому что это часть base
и будет автоматически удалена в gulp.dest
).
В канал dest
, структуры каталогов (project1, project2, et c.) все еще существуют, но будут отправлены в вашу папку dest
без пути base
в начале. Поэтому вам нужно будет добавить любую часть этого пути base
обратно в вашу папку dest
, если вы этого хотите.
Итак, gulp.dest('dist/projects')
, чтобы вернуть сохраненную структуру папок в projects
, как вы хотеть.
Так что если то, что я сказал, является верным, этот вариант также должен работать:
gulp.task("projectTest", () => {
// return gulp.src("./src/projects/**/*.css")
return gulp.src("./src/**/*.css")
// .pipe(gulp.dest('dist/projects'))
.pipe(gulp.dest('dist'))
});
Теперь структура каталогов в src
сохраняется (потому что src
является base
). Таким образом, вы получите тот же результат, просто отправив все это на dist
.
Вы можете решить, какую форму вы предпочитаете, я думаю, что первая версия немного понятнее. И если в src
есть файлы, которые вы не хотите захватывать глобусом gulp.src
.