了解如何在 Laravel Mix 中使用 Tailwind 的 JIT 编译器

发布时间 作者

Learn how to use Tailwind's JIT compiler with Laravel Mix image

一夜之间,Adam WathanTailwind Labs 团队发布了一个新的 JIT 编译器,它会在您编写模板时按需生成您的样式,而不是在初始构建时生成所有样式。

此编译器的主要优势是能够直接开始编写您的 Tailwind 驱动的 HTML,而无需构建整个 4MB+ 的 CSS 文件(以及 删除未使用的 CSS 以便稍后在生产中缩减其大小)。

使用 Laravel Mix 配置

作为一个主要使用 Laravel 的开发人员,我习惯了 Laravel Mix,我想看看如何让它与 Laravel Mix 一起使用,并且很高兴地发现它 a) 相当简单,而且 b) Just Works™️*

首先,使用 NPM 安装 JIT 编译器。

npm install -D @tailwindcss/jit tailwindcss postcss

接下来,确保您的 tailwind.config.js 文件已设置为监视您的模板文件

// tailwind.config.js
module.exports = {
purge: [
'./resources/**/*.blade.php',
'./resources/**/*.js',
'./resources/**/*.vue',
],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
}

然后,指示 Mix 使用 JIT 编译器

// webpack.mix.js
const mix = require("laravel-mix");
 
mix.postCss("resources/css/app.css", "public/css").options({
postCss: [
require("@tailwindcss/jit"),
],
});

最后,启动 Laravel Mix 监视器

npx mix watch

注意事项

与 postcss-import 一起使用

如果您在 CSS 文件中使用 @import 语句(也就是说,如果您使用的是类似于 Webpacker 的东西来处理 Rails),那么您还需要包含 postcss-import 插件

mix.postCss("resources/css/app.css", "public/css").options({
postCss: [
require("@tailwindcss/jit"),
+ require("postcss-import"),
],
});

增量更改

您可能(像我一样)注意到使用 JIT 编译器会在监视器运行时附加类 - 即使您删除了它们。

正如 Robin 所说,这样做是为了在开发过程中保持类的缓存纯粹地增量。这意味着,如果您使用一个类,然后删除它,然后再次使用它,JIT 编译器的性能可以保持相当快。

这在开发期间不会导致任何问题,重启监视器(npx mix watch)将重新编译整个 CSS 文件,其中只包含实际使用的类。

也就是说,请记住在部署时使用 npx mix --production 运行生产构建,以确保您的最终 CSS 文件尽可能小。

准备就绪

在 Mix 监视器运行时,每次您保存对 purge-watchd 文件的更改时,JIT 编译器都会重新生成您的 public/css/app.css 文件,其中只包含您在这些文件中使用的 Tailwind 类。

这确保了您的项目只包含实际使用的类,并且会从一开始就将编译后的 CSS 文件的大小控制在较小的范围内。

* 请注意,在撰写本文时,似乎存在一个与 前缀样式和否定类 相关的编译问题,因此如果您在生成的样式中使用前缀,请务必注意这一点。

Michael Dyrynda photo

父亲,Laravel 新闻播客联合主持人,以及 Laracon AU 组织者。

Cube

Laravel 新闻稿

加入 40,000 多名其他开发人员,绝不错过任何新技巧、教程等。

Laravel Forge logo

Laravel Forge

轻松创建和管理您的服务器,并在几秒钟内部署您的 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发人员必备的代码运行器。使用 AI、自动完成和本地和生产环境的即时反馈来调试代码。

Tinkerwell
No Compromises logo

No Compromises

Joel 和 Aaron,来自 No Compromises 播客的两名经验丰富的开发者,现在可以为您的 Laravel 项目提供服务。⬧ 7500 美元/月的固定价格。⬧ 无需漫长的销售流程。⬧ 无需合同。⬧ 100% 退款保证。

No Compromises
Kirschbaum logo

Kirschbaum

提供创新和稳定性,确保您的 Web 应用程序取得成功。

Kirschbaum
Shift logo

Shift

运行旧版本的 Laravel?即时、自动化的 Laravel 升级和代码现代化,让您的应用程序保持新鲜。

Shift
Bacancy logo

Bacancy

让您的项目如虎添翼,每月只需 2500 美元,即可获得拥有 4-6 年经验的资深 Laravel 开发人员。获得 160 小时的专业知识和 15 天的无风险试用。立即安排电话会议!

Bacancy
Lucky Media logo

Lucky Media

立即获得幸运 - Laravel 开发的理想选择,拥有十多年的经验!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar:Laravel 电子商务

Laravel 的电子商务。一个开源软件包,将现代无头电子商务功能的强大功能带到 Laravel。

Lunar:Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 职位板

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit:Laravel SaaS 启动工具包

SaaSykit 是一个 Laravel SaaS 启动工具包,它包含运行现代 SaaS 所需的所有功能。付款、漂亮结账、管理面板、用户仪表板、身份验证、即用型组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 启动工具包
Rector logo

Rector

您无缝升级 Laravel、降低成本和加速创新,助力成功企业的合作伙伴

Rector
MongoDB logo

MongoDB

通过 MongoDB 和 Laravel 的强大集成增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。支持事务、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。了解 MongoDB 的灵活、现代数据库如何改变您的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单的零依赖输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

将 Swagger UI 添加到您的 Laravel 应用程序

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的精确 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel 提示构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速、模糊的网站搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 包为您的 Laravel 应用程序添加评论

阅读文章