Я действительно нашел решение этой проблемы на работе сегодня. Возможно, это не лучший способ, но он работает.
В конце задачи 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-файл.