gulp-file-include
Простой плагин для сборщика gulp, который помогает облегчить работу при верстке сайтов
В качестве сборщика я использую gulp 4, устанавливаем сам плагин:
npm install --save-dev gulp-file-include
В файле сборщика gulpfile.js подключаем плагин:
const fileinclude = require('gulp-file-include');
Теперь осталось написать функцию для нашего таска по сборке (подключению) отдельных блоков в наш основной html файл:
function joinHtml() {
return gulp.src([
'./src/*.html',
])
.pipe(fileinclude({
prefix: '@@',
basepath: '@file'
}))
.pipe(gulp.dest('./build/'))
.pipe(browserSync.stream())
}
gulp.task('joinHtml', joinHtml);
Запускаем такс в командной строке gulp joinHtml
Функция очень простая, ищет файлы в каталоге /src/ и подключается нужные нам блоки, которые указаны через @@include (символы собаки можно заменить на свои), обновляем страницу через плагин browserSync (заранее нужно установить). Пример:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
@@include('./template-parts/header.html')
<div class="content">Какой-то контент</div>
@@include('./template-parts/footer.html')
</body>
</html>
При ошибке not such file or directory собственно либо не существует файла, либо вы неверно указали путь
Если вы не хотите, чтобы файлы подключаемых блоков копировались в /build , то можно немного подправить функцию указав исключения имен файлов:
function joinHtml() {
return gulp.src([
'./src/*.html',
'!./src/template-parts/*.html',
//исключаем все файлы из папки
])
.pipe(fileinclude({
prefix: '@@',
basepath: '@file'
}))
.pipe(gulp.dest('./build/'))
.pipe(browserSync.stream())
}