Использование задач gulp с PHP-файлами просмотра

Этот вопрос более теоретический, чем практический.
Допустим, у меня есть проект, основанный на PHP-фреймворке Symphony / Zend, я также использую gulp для работы в веб-интерфейсе. Я хотел бы сделать этот проект профессионально, поэтому я использую плагины gulp, такие как jade, clean, uglify, minify, gzip, imagemin и оборот. Если кто-то не знает, что это за глоток-рев, мы идем:

Static asset revisioning by appending content hash to filenames unicorn.css → unicorn-d41d8cd98f.css

Хорошая вещь для кэширования статических файлов, например.

Итак, вот проблема …
Я запускаю задачи gulp и получаю следующие файлы:

- assets
- css
- style-bfd65634.css
- js
- vendor-mkg5454.js
- img
- background-ok54353.png
etc...

После того, как я закончу свою работу с внешним интерфейсом, я хочу поместить ее в файлы представления PHP-фреймворка (файлы phtml), например:
layout.phtml

...
<link type="text/css" rel="stylesheet" media="screen" href="<?php echo $this->basePath(); ?>/assets/css/style-bfd65634.css">
...
<div id="logo">
<img src="<?php echo $this->basePath(); ?>/assets/img/background-ok54353.png" />
</div>
...

То же самое относится и к js-файлам, изображениям и т. д.
Через несколько недель мне нужно что-то изменить в стилях CSS и что теперь?
Как я могу перезапустить задачи gulp без необходимости изменять phtml-файлы из PHP-фреймворка? Или мне нужно вручную изменять измененные файлы в КАЖДОМ phtml файле?
Если так, то какой смысл использовать такие плагины, как gulp-rev? Просто для статических сайтов? Насколько я знаю, нет ни одного плагина, который бы конвертировал нефритовые файлы в phtml с помощью PHP-тегов.

3

Решение

Вам нужно использовать Глоток-инъекционные внедрить эти вновь созданные файлы в определенном месте.

<!DOCTYPE html>
<html>
<head>
<title>My index</title>
<!-- inject:css -->
<link rel="stylesheet" href="/src/style1.css">
<link rel="stylesheet" href="/src/style2.css">
<!-- endinject -->
</head>
<body>
1

Другие решения

Просто для статических сайтов?

в основном да.

Чтобы сделать то же самое с php, вы должны использовать функцию-обертку для отображения URL ресурса ресурса.

Эта функция-обертка примет относительный URL-адрес, сопоставит его с фактическим путем к файлу, получит время последнего обновления файла и добавит его к возвращенному URL-адресу, например url/to/asset.some?l=<filemtime value>

увидеть http://php.net/manual/fr/function.filemtime.php


Я должен упомянуть, что альтернативным способом является сборка вашего php файла через цепочку сборок grunt, см. Wiredep. Но я не рекомендую это. увидеть https://github.com/stephenplusplus/grunt-wiredep

0

Плагин глоток-рев продукции rev-manifest.json файл с картой:

{
"css/main.css": "css/main-f95991b528.css",
"js/main.js": "js/main-5598f71801.js"}

В фреймворке Laravel есть красивое решение эликсир функция в php.

<link rel="stylesheet" type="text/css" href="<?php echo elixir("css/main.css") ?>">

А также elixir функция:

    function elixir($file)
{
static $manifest = null;

if (is_null($manifest)) {
$manifest = json_decode(file_get_contents(public_path('build/rev-manifest.json')), true);
}

if (isset($manifest[$file])) {
return '/build/'.$manifest[$file];
}

throw new InvalidArgumentException("File {$file} not defined in asset manifest.");
}
0
По вопросам рекламы [email protected]