@stepaniwe

Как работать с gulp-file-include?

Хочу чтобы в index.html можно было инклудить блоки. Например так: @@include('_include/page_head.html') И чтобы файл с блоками оставался в папке разработки и отслеживался в таске watch.
А вот мои таски:
gulp.task('fileinclude', function() {
 gulp.src('src/_include/*.html')
.pipe(fileinclude({
  prefix: '@@',
  basepath: '@file'
}))
.pipe(concat('page.html'))
.pipe(gulp.dest('src/')); //выгружаем файл
});

gulp.task('watch',['browser-sync', 'fileinclude', 'less', 'scripts'], function() {//
gulp.watch('src/less/**/*.less', ['less']); 
 gulp.watch('src/*.html', browserSync.reload);
  gulp.watch('src/js/**/*.js', browserSync.reload);    
});
  • Вопрос задан
  • 15746 просмотров
Решения вопроса 1
@stepaniwe Автор вопроса
file-include очень непонятный
поэтому перешел на gulp-rigger
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@FoxFka
На сколько я понимаю - этот плагин не предназначен для автоматической сборки файлов. То есть ваш page.html Вам в любом случае придется сделать вручную, забив в него каркас html-файла. А вот включать в него блоки с разными параметрами как раз можно и нужно при помощи плагина. Для того, чтобы файлы шаблонов блоков не попадали в сборку на мой взгляд лучше всего поступить примерно следующим образом.
Можно добавлять некий единый префикс для всех файлов блоков. Во-первых это даст возможность привязаться к этому префиксу при настройке task, а во-вторых Вы, вернувшись к работе над проектом через некоторое время быстро сможете отличить файлы шаблонов от блоков.
Выглядеть это все может так:
gulp.task('html:build', function() {
 gulp.src('src/[^_]*.html')
.pipe(fileinclude({
  prefix: '@@',
  basepath: '@file'
}))
.pipe(gulp.dest('build/')); 
});

Эта задача будет отрабатывать на всех html файлах директории src, имена которых НЕ начинаются с символа "_"
Далее, чтобы подключить файл блока в ваш шаблон нужно создать его, не забыв добавить "_" в начало. Например "src/_includes/_module.html". Подключить его в обрабатываемый файл src/index.html можно, добавив в нужное место
@@include('./_includes/_module.html')
При запуске таски html:build в вашей папке /build появится файл index.html, включающий в себя содержимое файла module.html
Это базовая схема, которую можно расширять в зависимости от ваших потребностей. Вся инфа для этого есть в документации и примерах.
Ответ написан
Комментировать
@bulkmaker
Просто вложенность добавьте. /src/html/_includes
src - готовые файлы
html - html c вложениями
_includes - вложения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы