为啥在 Tailwind CSS JIT 模式下保存文件时样式不更新,我需要重新启动服务器?

Posted

技术标签:

【中文标题】为啥在 Tailwind CSS JIT 模式下保存文件时样式不更新,我需要重新启动服务器?【英文标题】:Why styles don't update when saving the files in Tailwind CSS JIT mode and I need to restart the server?为什么在 Tailwind CSS JIT 模式下保存文件时样式不更新,我需要重新启动服务器? 【发布时间】:2021-12-11 01:31:51 【问题描述】:

编辑:此问题现已弃用,因为 Tailwind 3.0.0 版无需使用 CRACO 即可使用 react

在 JIT 模式下尝试将 Tailwind 与 React 一起使用时,我添加的类没有样式,即使在刷新页面后也是如此。我必须重新启动服务器才能使样式生效。

tailwind.config.js:

module.exports = 
    mode: "jit",
    purge: ["./src/**/*.js,jsx,ts,tsx", "./public/index.html"],
    ...

craco.config.js:

module.exports = 
    style: 
        postcss: 
            plugins: [require("tailwindcss"), require("autoprefixer")]
        
    

package.json:


    "name": "random-name",
    "version": "0.1.0",
    "private": true,
    "dependencies": 
        "@craco/craco": "^6.3.0",
        "react": "^17.0.2",
        "react-dom": "^17.0.2",
        "react-scripts": "4.0.3",
        "web-vitals": "^1.1.2"
    ,
    "scripts": 
        "start": "craco start",
        "build": "craco build",
        "test": "craco test",
        "eject": "react-scripts eject"
    ,
    "devDependencies": 
        "@tailwindcss/postcss7-compat": "^2.2.17",
        "autoprefixer": "^9.8.8",
        "postcss": "^7.0.39",
        "tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.2.17"
    

【问题讨论】:

【参考方案1】:

package.json 中,您应该在启动脚本上激活监视模式,例如

"scripts": 
   "start": "TAILWIND_MODE=watch craco start",
   ...

【讨论】:

【参考方案2】:

更新

Tailwind v3.0+ 开始,JIT 模式现在是 built-in feature。

在 Tailwind CSS v3.0 中,新引擎已经稳定并取代了 经典引擎,因此每个 Tailwind 项目都可以从中受益 开箱即用的改进。


旧答案

这似乎是使用顺风 JIT 模式时的常见问题,在 troubleshooting guides 中有解释。

从 Tailwind CSS v2.2+ 开始,JIT 引擎依赖于 PostCSS 的 将您的内容文件注册为 CSS 的目录依赖消息 使用您的构建工具构建依赖项。这些是相当新的 除了 PostCSS(2021 年 5 月添加),并不是所有的构建工具都有 已更新以支持它们。

如果更改内容文件时 CSS 没有重新构建,请尝试 将TAILWIND_MODE=watch 设置为你的监视脚本的一部分来告诉 Tailwind 改为使用旧的依赖项跟踪策略, 与许多构建工具配合得很好。

由于 CRACO 用于为 React.js 配置尾风 CSS,请将其添加到您的 package.json 文件中。


  // ...
  scripts: 
    "dev": "TAILWIND_MODE=watch craco start",

    // Do not set TAILWIND_MODE for one-off builds
    "build": "craco build",
    // ...
  ,
  // ...

另外,请注意

您应该只在实际运行时设置 TAILWIND_MODE=watch 一个开发服务器/监视进程,并且只有在你的构建工具还没有的情况下 支持 PostCSS 目录依赖消息。 这个标志是 不兼容工具的临时解决方法,最终将 在 Tailwind CSS 的未来版本中删除。

【讨论】:

【参考方案3】:

检查您的package.json 以获取posctcss 版本。当我安装 Tailwind 时,它是第 7 版,我遇到了同样的问题。我刚刚将我的postcss 更新到了最新版本,它为我解决了这个问题。

【讨论】:

以上是关于为啥在 Tailwind CSS JIT 模式下保存文件时样式不更新,我需要重新启动服务器?的主要内容,如果未能解决你的问题,请参考以下文章

下一代Tailwind CSS 将引入JIT编译器

如何使用 jit 在 tailwind-css 中使用布局变体?

Visual Studio 代码 - 使用 Tailwind JIT CSS 在保存时编译

为啥我的 Tailwind CSS 切换按钮在深色模式下不可见?

为啥 tailwind css 在 iPhone ios 设备上不起作用?

为啥文本颜色在 Tailwind css + next.js 项目中不起作用