tailwind.config.js 清除选项无法识别 PHP 文件并导致无限重新编译

tailwind.config.js purge option doesn't recognise PHP files and causes infinite recompiling

我正在使用 Tailwind 构建自定义 WordPress 主题并使用 Laravel Mix 6 编译资产。

在我的 tailwind.config.js 文件中,我有以下 purge 配置:

  purge: {
    enabled: true,
    content: [
      './assets/**/*.{.js|.scss}',
      // './*.php',
      // './*/*.php',
      // './*/*/*.php',
    ],
    safelist: [
      // list any Tailwind classes which should never be purged, for example classes added via WordPress which are stored in the database
      // 'classname',
    ],
  },

现在,我的第一行绝对完美。它会在我的 assets 文件夹或子文件夹中查找任何 .scss.js 文件,并根据更改进行编译。但是,如果我取消注释任何 .php 行 Laravel 即使我没有进行更改,Mix 也会在终端中不断重新编译 - 它完全是无穷无尽的。

我已将问题缩小到这些行,如果不添加它们也能正常工作,但我需要添加它们以便 TailWind 知道正在使用什么 类。

我的webpack.mix.js也供参考:

const mix = require("laravel-mix");

mix.js("assets/js/main.js", "build/scripts.js")
    .sass("assets/scss/main.scss", "build")
    .sourceMaps()
    .browserSync("wordpressthemedev.local")
    .options({
        processCssUrls: false,
        postCss: [
            require("postcss-import"),
            require("tailwindcss"),
            require("postcss-nested"),
            require("autoprefixer"),
        ],
    });

此外,如果我这样做:

  purge: {
    enabled: true,
    content: [
      './assets/**/*.{.js|.scss}',
      './parts/**/*.php',
      './functions/**/*.php',
      './404.php',
      './footer.php',
      './functions.php',
      './header.php',
      './index.php',
      './page.php',
      './search.php',
      './single.php',
      // './*/*/*.php',
    ],
    safelist: [
      // list any Tailwind classes which should never be purged, for example classes added via WordPress which are stored in the database
      // 'classname',
    ],
  },

Mix 不会永远编译并且 运行 很好,但我宁愿尽可能避免在根级别声明每个 PHP 文件

因此,令人恼火的是,似乎没有解决此问题的简单方法。正如我自己和 Amar 强调的那样,如果您在清除数组中明确设置文件的名称,则可以解决这个问题 - 但这不是最佳解决方案,尤其是当您的实现有很多文件要检查时。

我做了一些额外的挖掘,如果你想在 WordPress 上使用它,我真的建议从 Roots Sage or MountainBreeze on a Roots Bedrock 安装开始。

我个人觉得 Sage 有点过于臃肿,对于我构建的大多数网站来说都有不必要的功能,所以我 运行 Bedrock 和 MountainBreeze - 到目前为止非常好的组合!