@tory_kuzya

Как вставить php-код в генерируемый pug'ом файл PHP сборщиком gulp? Возможно?

Проект собирается сборщиком gulp. Есть таски под разные задачи. Изначально из pug-файлов собирались .html-файлы. Потом появилась потребность одновременно сохранять эти же страницы в формате php. Использую rename для переименования html -> php
Вот таск сборки html/php:
module.exports = function() {
    $.gulp.task('pug', ()=>  {
        return $.gulp.src('./dev/pug/pages/*.pug')
            .pipe($.gp.pug({
                locals : {
                    nav: JSON.parse($.fs.readFileSync('./data/navigation.json', 'utf8')),
                    content: JSON.parse($.fs.readFileSync('./data/content.json', 'utf8')),
                },
                pretty: true
            }))
            .on('error', $.gp.notify.onError(function(error) {
                return {
                    title: 'Pug',
                    message: error.message
                };
            }))
            .pipe($.gulp.dest('./build/'))
            .on('end', $.browserSync.reload);
    });

    $.gulp.task('pugphp', ()=>  {
        return $.gulp.src('./dev/pug/pages/*.pug')
            .pipe($.gp.pug({
                locals : {
                    nav: JSON.parse($.fs.readFileSync('./data/navigation.json', 'utf8')),
                    content: JSON.parse($.fs.readFileSync('./data/content.json', 'utf8')),
                },
                pretty: true
            }))
            .on('error', $.gp.notify.onError(function(error) {
                return {
                    title: 'Pug',
                    message: error.message
                };
            }))
            .pipe($.rename(function (path) {
                path.extname = ".php"
            }))
            .pipe($.gulp.dest('./build/'))
            .on('end', $.browserSync.reload);
    });
};

А вот gulp-файл:
global.$ = {
    path: {
        task: require('./gulp/paths/tasks.js')
    },
    gulp: require('gulp'),
    del: require('del'),
    fs: require('fs'),
    browserSync: require('browser-sync').create(),
    gp: require('gulp-load-plugins')(),
    scss: require('gulp-sass'),
    rename: require('gulp-rename')
};

$.path.task.forEach(function(taskPath) {
    require(taskPath)();
});

$.gulp.task('dev', $.gulp.series(
    'clean',
    $.gulp.parallel('favicon', 'styles:dev', 'pug', 'pugphp', 'libsJS:dev', 'js:copy', 'libsCSS:dev', 'libs:dev', 'svg', 'img:dev', 'fonts','svg:copy')));

$.gulp.task('build', $.gulp.series(
    'clean',
    $.gulp.parallel('favicon', 'styles:build', 'pug', 'libsJS:build', 'js:copy', 'libsCSS:build','libs:build', 'svg', 'img:build', 'fonts','svg:copy')));

$.gulp.task('default', $.gulp.series(
    'dev',
    $.gulp.parallel(
        'watch',
        'serve'
    )
));


Хотелось бы в php-файлы добавлять php-код автоматически, а не ручками (в частности нужно прописать
?v=<?=time()?>
В двух местах каждого php-файла.
Вопрос состоит в том, возможно ли это?
  • Вопрос задан
  • 375 просмотров
Пригласить эксперта
Ответы на вопрос 1
tenzorvec
@tenzorvec
Junior FE
в gulp сборке есть очень хороший сборщик gulp-rigger, который вставляет куски файлов в файл. в самом файле используется команда "//=" и расположение файла. "//= template/time.php"

в gulpfile.js
объявляешь переменную:
rigger = require('gulp-rigger'), // модуль для импорта содержимого одного файла в другой
и в нужном для тебя месте таска вставляешь
.pipe(rigger()) // импорт вложений
который просматривает файл на вышеуказанный источник и вклеивает один файл в другой...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы