В вашем случае вам не нужна опция base
.Этого достаточно:
return gulp.src('jsp/scss/*.scss')
.pipe(sass())
.pipe(gulp.dest("jsp/out/css"))
Я постараюсь объяснить, что, по моему мнению, происходит в вашем исходном коде.См. Объяснение опции base из базы глобусов в документации gulpjs :
базы глобусов
База глобусов, иногда называемая родителем глобусов, - это путьсегмент перед любыми специальными символами в строке глобуса.Таким образом, глобальная база /src/js/**.js - это / src / js /.Все пути, которые соответствуют глобу, гарантированно разделяют базу глоба - этот сегмент пути не может быть переменным.
Виниловые экземпляры, генерируемые src (), создаются с базой глоба, установленной как их базовое свойство.При записи в файловую систему с помощью dest () база будет удалена из выходного пути для сохранения структур каталогов.
Последнее предложение является ключевым.База будет удалена - поэтому, когда вы возвращаете базу в функции dest, она не действует.Вы устанавливаете базу, но она удаляется, оставляя путь gulp.src 'jsp/scss/'
в качестве структуры каталогов actve.
Это мое лучшее предположение относительно того, что происходит, когда вы возвращаете ту же базу, которая была удалена.
Теперь в моем упрощенном коде база автоматически 'jsp\scss'
(все перед глобусом *).Который удаляется, поэтому нам больше не нужно беспокоиться о папке scss
.Итак, какую структуру папок вы хотите: 'jsp/out/css'
[Кроме того, вы выбрали базу, которая не является частью структуры каталогов файла - мне это кажется странным (если не незаконным).Цель base состоит в том, чтобы позже указать в src, какую структуру папок использовать ПОСЛЕ базы, не включая базу.
Так, например, если вы используете базу из 'jsp', вы получите структуру папок-потомков.«СКС / и т.д.».следуя тому, что вы положили в gulp.dest, который будет действовать как родительский каталог.]