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

Posted

技术标签:

【中文标题】tailwind.config.js 清除选项无法识别 PHP 文件并导致无限重新编译【英文标题】:tailwind.config.js purge option doesn't recognise PHP files and causes infinite recompiling 【发布时间】:2021-11-13 11:35:51 【问题描述】:

我正在使用 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 文件

【问题讨论】:

祝你好运。在构建 Wordpress 主题时我也面临同样的问题 嘿@AmarUbhe - 我还没有找到解决方案,但我正在积极解决它。如果您找到任何信息,请告诉我:) 主要问题是 composer vendor 文件夹和 node_modules,因为你告诉它查找每个 .php 文件,它必须遍历每个可用文件夹,并且 node_modules + vendor 可能会变得非常大,如果你能找到一个忽略这些文件夹的方法会缩短编译时间 @Buttered_Toast 谢谢,编译时间不是问题,事实上它不断在使用watch时重新生成资产 这就是 watch 的用途,如果你想编译一次你可以使用 devprod 【参考方案1】:

因此,令人烦恼的是,似乎没有一个简单的方法可以解决这个问题。正如 Myself 和 A​​mar 强调的那样,如果您在 purge 数组中明确设置文件的名称,您可以解决这个问题 - 但这不是最佳解决方案,特别是如果您的实现有很多文件要检查。

我做了一些额外的挖掘,如果您想在 WordPress 中使用它,我真的建议您在安装 Roots Bedrock 时从 Roots Sage 或 MountainBreeze 开始。

我个人觉得 Sage 对于我构建的大多数网站来说都有些多余的功能,所以我正在使用 Bedrock 和 MountainBreeze - 到目前为止,这是一个非常好的组合!

【讨论】:

以上是关于tailwind.config.js 清除选项无法识别 PHP 文件并导致无限重新编译的主要内容,如果未能解决你的问题,请参考以下文章

在 Vite2 中,如何在 tailwind.config.js 中导入 ESModule

tailwind + vue

Tailwind CSS 扩展了 tailwind.config.js 中的标准颜色。当我尝试扩展颜色时,所有其他颜色都被删除

无法在 NuxtJS 中配置 Tailwind

如何在 Gatsby 主题中处理 tailwind.config.js

tailwindcss 官网定制:配置( `tailwind.config.js `-pimportant核心插件`resolveConfig`)主题 `theme` 配置