Как получить версию сборки gulp для автоматического обновления css-кэша с помощью PHP - PullRequest
0 голосов
/ 05 ноября 2019

Я использую задачу сборки gulp для объединения и минимизации нескольких CSS-файлов в файл с именем app.min.css.

Далее в Wordpress я использую этот бит кода для включения файла css:

 $version = '2.6';
 wp_enqueue_style( 'app.min', get_template_directory_uri() . '/assets/css/dist/app.min.css', array(), $version );

Но, к сожалению, мне нужно вручную обновлять номер версии каждый раз, когда я хочу выпустить свежую сборку app.min.css. Таким образом, Wordpress понимает, что он предоставил браузеру клиентов свежий файл CSS.

Возможно ли обнаружить новую версию сборки gulp. Поэтому мне не нужно вручную указывать Wordpress, что ему нужно обновить текущую таблицу стилей?

// conceptual code
$version = getLatestGulpBuildVersion();

1 Ответ

0 голосов
/ 05 ноября 2019

Я действительно нашел решение этой проблемы на работе сегодня. Возможно, это не лучший способ, но он работает.

В конце задачи gulp build вы можете создать файл version.txt, используя пакет gulp-file:

function deploy_version(dist_path) {
    let uniqueVersion = Date.now() + ( (Math.random() * 100000).toFixed());

    return gulp.src('src/**')
        .pipe(file('version.txt', uniqueVersion.toString()))
        .pipe(gulp.dest(theme_path + dist_path));
}

Вызов этой функции после завершения сборки, например:

// build app.min.css
gulp.task('build-custom-css', function () {

   // ...
   // building stuff...

   deploy_version('assets/css/dist/');
 });

Таким образом, в папке dist производственных папок dist JS и CSS находится файл version.txt. С таким содержимым, как уникальный номер, например 157295773737144587.

Теперь в functions.php мы можем просто загрузить версию в переменную $version, например:

$version = file_get_contents( get_template_directory_uri() . '/assets/css/dist/version.txt' );
wp_enqueue_style( 'app.min', get_template_directory_uri() . '/assets/css/dist/app.min.css', array(), $version );

Загружаяпапка dist со свежесобранными файлами, такими как файл app.min.css. Мы также загружаем файл version.txt с новым уникальным номером версии внутри него. Таким образом, браузер будет вынужден автоматически перезагрузить CSS-файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...