@daniel333
Fullstack-разработчик

Почему gulp не парсит PHP?

Здравствуйте. У меня проблема, gulp не парсит два PHP файла (отвечающие за отправку письма) при сборке проекта. Просто минифицирует их в кашу и на выходе эти файлы не выполняют свои функции. В сценарии gulp минификация только для css и js прописана.., не понимаю, в чём дело(((
сценарий GULP
/* It's principal settings in smart grid project */
let settings = {
    outputStyle: 'less', /* less || scss || sass || styl */
    columns: 12, /* number of grid columns */
    offset: '30px', /* gutter width px || % || rem */
    mobileFirst: false, /* mobileFirst ? 'min-width' : 'max-width' */
    container: {
        maxWidth: '1230px', /* max-width оn very large screen */
        fields: '15px' /* side fields */
    },
    breakPoints: {
        lg: {
            width: '1100px', /* -> @media (max-width: 1100px) */
        },
        md: {
            width: '960px'
        },
        sm: {
            width: '780px',
            fields: '15px' /* set fields only if you want to change container.fields */
        },
        xs: {
            width: '560px'
        }
        /* 
        We can create any quantity of break points.

        some_name: {
            width: 'Npx',
            fields: 'N(px|%|rem)',
            offset: 'N(px|%|rem)'
        }
        */
    }
};





//Папки исходников и проекта
let project_folder = '../domains/ameks/'; //require("path").basename(__dirname)
let source_folder = '#src';

let fs = require('fs');

let path = {
    build: {
        php: project_folder + "/",
        css: project_folder + "/css/",
        js: project_folder + "/js/",
        img: project_folder + "/css/img/",
        fonts: project_folder + "/css/fonts/",
    },
    src: {
        php: source_folder+"/**/*.php",
        css: source_folder+"/css/style.less", //**/*.{less,css}
        js: source_folder+"/js/script.js",
        img: source_folder+"/img/**/*.{png,jpg,svg,gif,ico,webp}",
        fonts: source_folder+"/fonts/**/*.ttf",
    },
    watch: {
        php: source_folder+"/**/*.php",
        css: source_folder+"/css/**/*.less",
        js: source_folder+"/js/**/*.js",
        img: source_folder+"/img/**/*.{png,jpg,svg,gif,ico,webp}",
    },
    clean: project_folder
}

//Переменные плагинов
let {src, dest} = require('gulp'), 
    gulp = require('gulp'),
    browsersync = require('browser-sync').create(), //"Живая вёрстка"
    fileinclude = require('gulp-file-include'), //Соединение нескольких файлов в один
    del = require('del'), //Очистка папки проекта перед сборкой
    connectPHP = require('gulp-connect-php'), //Открытие сервера на PHP
    less = require('gulp-less'), //Работа с less
    autoprefixer = require('gulp-autoprefixer'), //Автопрефиксы
    group_media = require('gulp-group-css-media-queries'), //Группировка медиа-запросов
    clean_css = require('gulp-clean-css'), //Минификация CSS
    rename = require('gulp-rename'), //Переименование файлов
    babelJS = require('gulp-babel'), //Конвертация нового кода JS в старый
    uglify = require('gulp-uglify-es').default, //Минификация JS
    imagemin = require('gulp-imagemin'), //Сжатие картинок
    webp = require('gulp-webp'), //Конвертация картинок в современный формат
    webphtml = require('gulp-webp-html'), //Вставка совр. картинок в разметку
    webpcss = require('gulp-webpcss'), //Вставка совр. картинок в стили
    ttf2woff = require('gulp-ttf2woff'), //Конвертация шрифтов
    ttf2woff2 = require('gulp-ttf2woff2'), //Конвертация шрифтов
    fonter = require('gulp-fonter'), //Конвертация шрифтов
    smartgrid = require('smart-grid');

    smartgrid('#src/css/libs', settings);


function browserSync() {
    browsersync.init({
        proxy: 'ameks',
        notify: false,
        port: 80
    })
}

//Запуск сервера
  function connect() {
    connectPHP.server({ base: './' + project_folder + './', keepalive:true, hostname: 'ameks', port:80, open: false});
  }

//Перенос файлов PHP
  function php() {
    return src(path.src.php)
        .pipe(webphtml())
        .pipe(dest(path.build.php))
        .pipe(browsersync.stream())
  }

//Перенос Изображений (картинок)
  function images() {
    return src(path.src.img)
        .pipe(
          webp({
            quality: 70
          })
        )
        .pipe(dest(path.build.img))
        .pipe(src(path.src.img))
        .pipe(
          imagemin({
            progressive: true,
            svgoPlugins: [{ removeViewBox: false }],
            interplaced: true,
            optimizationLevel: 7, // от 0 до 7
          })
        )
        .pipe(dest(path.build.img))
        .pipe(browsersync.stream())
  }

//Перенос файлов CSS + компиляция из Less
  function css() {
    return src(path.src.css)
        .pipe(
            less({
                path: path.src.css
            })
        )
        .pipe(group_media()) 
        .pipe(
          autoprefixer({ 
            overrideBrowserslist: ['last 20 versions'], 
            cascade: true
          })
        )
        .pipe(webpcss({
            webpClass: '.webp',
            noWebpClass: '.no-webp',
        }))
        .pipe(dest(path.build.css)) //Выгрузка исходного CSS
        .pipe(clean_css())
        .pipe(
          rename({
            extname: ".min.css"
          })
        )
        .pipe(dest(path.build.css)) //Выгрузка сжатого CSS
        .pipe(browsersync.stream())
  }

//Перенос файлов JS
  function js() {
    return src(path.src.js)
        .pipe(fileinclude())
        .pipe(babelJS())
        .pipe(dest(path.build.js))
        .pipe(uglify()) 
        .pipe(
          rename({
            extname: ".min.js"
          })
        )
        .pipe(dest(path.build.js))
        .pipe(browsersync.stream())
  }

//Перенос шрифтов
  function fonts() {
    src(path.src.fonts)
      .pipe(ttf2woff())
      .pipe(dest(path.build.fonts))
    return src(path.src.fonts)
      .pipe(ttf2woff2())
      .pipe(dest(path.build.fonts))
  }
  gulp.task('otf2ttf', function() {
    return src([source_folder + '/fonts/*.otf'])
      .pipe(fonter({
        formats: ['ttf']
      }))
      .pipe(dest(source_folder + '/fonts/'));
  })


  function fontsStyle() {
  
    let file_content = fs.readFileSync(source_folder + '/css/fonts.less');
    if (file_content == '') {
      fs.writeFile(source_folder + '/css/fonts.less', '', cb);
      return fs.readdir(path.build.fonts, function (err, items) {
        if (items) {
          let c_fontname;
          for (var i = 0; i < items.length; i++) {
            let fontname = items[i].split('.');
            fontname = fontname[0];
              if (c_fontname != fontname) {
                fs.appendFile(source_folder + '/css/fonts.less', '.font("' + fontname + '", "' + fontname + '", 400, normal);\r\n', cb);
              }
              c_fontname = fontname;
          }
        }
      })
    }
  }
  
  function cb() {

  }

//Живое обновление файлов
  function wathFiles() {
      gulp.watch([path.watch.php], php);
      gulp.watch([path.watch.css], css);
      gulp.watch([path.watch.js], js);
      gulp.watch([path.watch.img], images);
  }

//Очистка папки проекта перед сборкой
  function clean() {
    return del([path.clean], {force: true})
  }

let build = gulp.series(clean, gulp.parallel(js, css, php, images, fonts), fontsStyle, connect);
let watch = gulp.parallel(build, wathFiles, browserSync);


//Задачи для Gulp
exports.fontsStyle = fontsStyle;
exports.fonts = fonts;
exports.images = images;
exports.js = js;
exports.css = css;
exports.php = php;
exports.build = build;
exports.watch = watch;
exports.default = watch;

Результат после сборки
60cc2ef3e5238375599299.jpeg
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
//Перенос файлов PHP
  function php() {
    return src(path.src.php)
   //     .pipe(webphtml()) Вот эту хрень выбросите
        .pipe(dest(path.build.php))
        .pipe(browsersync.stream())
  }


А картинки сразу самостоятельно вставляйте в современных форматах.
Данный плагин совершенно бесполезен. Даже вреден, в каком-то смысле.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@daniel333 Автор вопроса
Fullstack-разработчик
Нашёл и со своей стороны решение данной проблемы) Сообщение на фото надоело выскакивать и решил от него избавиться. Добавил путь к php.exe своего openServer через переменные среды окружения Windows 10 (в VS Code ничего не правил). Сделал это на рабочем компе, после чего появилась проблема. На домашнем ноутбуке (Windows 7) ничего не делал, сообщение игнорирую. Но GULP со всеми плагинами работает как положено. Может кому будет полезно
Фото
60ccaf96cb645711738851.jpeg
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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