Имеется таска для gulp,в которой при одном режиме работы происходит преобразование pug файлов html, а при другом - в php. Проблема в том, что для php файлов не нужны include файлы из pug, а нужны require с путями от корня (скомпилировать отдельно pug файлы в php не проблема), а для html соответственно всё должно быть по умолчанию. Один из вариантов было использовать код типа этого:
//
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetPageProperty("title", "Главная");
$APPLICATION->SetPageProperty("NOT_SHOW_NAV_CHAIN", "Y");
$APPLICATION->SetTitle("Главная страница");
?>
include base_areas/header.pug
// ./header
,в котором для html генерится лишний код, но для разработки это не страшно, а вот для php файлов приходится для каждого такого участка кода раскомментировывать участок с php кодом, а участок с html кодом до знака ./ с названием класса удалять. Такой вариант долгий, нудный и не комильфо. Есть 2 мысли по направлению решения проблемы: 1) ставить маркеры для require и include в pug файле, а при компиляции выбирать соответствующий блок (либо удалять не нужный) 2) использовать pug-php-filter для компиляции в php
:php
echo "hello world";
Вопрос в следующем: какой из вариантов более оптимальный и если 1-й, то какой плагин можно использовать для фильтрации по флагам (маркерам), а если 2-й, то какой плагин поможет игнорировать include в pug файле при компиляции? При необходимости, могу скинуть ссылку на таску на Гитхабе
решил сделать фильтр при помощи регулярок и плагина gulp-replace
let includeRegExp = /include.+\.pug/g;
function regExpFilter(str) {
let output
let header = `| \
<? \
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); \
$APPLICATION->SetPageProperty("title", "Главная"); \
$APPLICATION->SetTitle("Главная страница"); \
?>
`
let footer = `
| <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
`;
if (str.search(/base_areas\/header.pug/ig) != -1){
output = header;
} else if (str.search(/base_areas\/footer.pug/ig) != -1){
output = footer;
} else {
let clearStr = str.split(' ')[1].replace(/\.pug/, '').replace(/\.\.\//, '')
output = '| <?require($_SERVER["DOCUMENT_ROOT"]."'+ destPath + clearStr + '.php");?>';
}
return output;
}
gulp.task('pug', function() {
return gulp
.src([projectPath + 'src/pug/**/*.pug'])
.pipe(gulpif(!isDev, replace(includeRegExp, regExpFilter)))
.pipe(pug({
pretty: true
}))
.pipe(gulp.dest(destPath))
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю небольшой сайт состоящий не более чем из 10 страничек на html+css+js+jquery, других технологий пока что не знаюВстал вопрос, если допустим я сделал...
Написал скрипт который парсит котировки валют со многих бирж, потом данные все нужно анализировать и выдавать некие результатыДанный скрипт...
Есть строка, например “sitecom/categori/categori-artickle-1”