php - 如何获取 gulp 构建版本以使用 PHP 自动刷新 css 缓存

标签 php css wordpress gulp

我正在使用 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();

最佳答案

我今天在工作中确实找到了解决这个问题的方法。这可能不是最好的方法,但它确实有效。

gulp build 任务结束时,您可以使用 gulp-file 包创建一个 version.txt 文件:

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/');
 });

这样在JS和CSS生产dist文件夹的dist文件夹下就有了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 文件。

关于php - 如何获取 gulp 构建版本以使用 PHP 自动刷新 css 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58709532/

相关文章:

html - 在 html/css 中显示包括颜色的卡片套装

javascript - 改变整行的背景颜色

php - 在 Woocommerce 结帐时禁用自动完成字段(自动填充),某些字段除外

heroku - 在 Heroku 上运行时激活 JetPack WordPress 插件?

php - 如何在 Yii 中使用 union 2 select 创建查询?

php - 从数据表和透视查找表构造嵌套的 PHP 关联数组

javascript - 将产品属性值分配给magento中的另一个产品属性

php - 从各个表中选择数据,无需多次查询

CSS 元素结构

wordpress - 基于日期和日期范围的成员(member)专享下载