devanoxltd/ tailwind-class-merge-php
TailwindClassMerge for PHP 通过自动解决它们之间的冲突来合并多个 Tailwind CSS 类
Requires
- php: ^8.2.0
- illuminate/support: ^v11.10
- psr/simple-cache: ^3.0
Requires (Dev)
- laravel/pint: ^v1.16
- nunomaduro/collision: ^v8.1
- pestphp/pest: ^v2.34
- pestphp/pest-plugin-arch: ^v2.7
- pestphp/pest-plugin-mock: ^2.0
- pestphp/pest-plugin-type-coverage: ^v2.8
- phpstan/phpstan: ^1.11
- rector/rector: ^1.1
- symfony/var-dumper: ^v7.1
README
TailwindClassMerge for PHP 允许您合并多个 Tailwind CSS 类,并通过删除与后面定义的类冲突的类来自动解决类之间的冲突。
由 dcastil 编写的 tailwind-merge 的 PHP 版本。并从 gehrisandro 的 tailwind-merge-php 中克隆和改进。
支持 Tailwind v3.0 至 v3.4。
如果您觉得这个包很有帮助,请考虑赞助维护者
- Devanox Private Limited: github.com/sponsors/devanoxltd
注意:此包仍在早期开发阶段。
如果您正在使用 Laravel,则可以使用 TailwindClassMerge for Laravel
目录
入门
需要 PHP 8.1+
首先,通过 Composer 包管理器安装 TailwindClassMerge
composer require devanoxltd/tailwind-class-merge-php
然后,使用 TailwindClassMerge 类合并您的 Tailwind CSS 类
use TailwindClassMerge\TailwindClassMerge; $tw = TailwindClassMerge::instance(); $tw->merge('text-red-500', 'text-blue-500'); // 'text-blue-500'
您可以通过工厂创建新实例来调整 TailwindClassMerge 的配置
use TailwindClassMerge\TailwindClassMerge; $instance = TailwindClassMerge::factory() ->withConfiguration([ 'prefix' => 'tw-', ])->make(); $instance->merge('tw-text-red-500', 'tw-text-blue-500'); // 'tw-text-blue-500'
有关如何配置 TailwindClassMerge 的更多信息,请参阅 配置 部分。
用法
TailwindClassMerge 不仅能够解决基本 Tailwind CSS 类之间的冲突,还可以处理更复杂的场景
use TailwindClassMerge\TailwindClassMerge; $tw = TailwindClassMerge::instance(); // conflicting classes $tw->merge('block inline'); // inline $tw->merge('pl-4 px-6'); // px-6 // non-conflicting classes $tw->merge('text-xl text-black'); // text-xl text-black // with breakpoints $tw->merge('h-10 lg:h-12 lg:h-20'); // h-10 lg:h-20 // dark mode $tw->merge('text-black dark:text-white dark:text-gray-700'); // text-black dark:text-gray-700 // with hover, focus and other states $tw->merge('hover:block hover:inline'); // hover:inline // with the important modifier $tw->merge('!font-medium !font-bold'); // !font-bold // arbitrary values $tw->merge('z-10 z-[999]'); // z-[999] // arbitrary variants $tw->merge('[&>*]:underline [&>*]:line-through'); // [&>*]:line-through // non tailwind classes $tw->merge('non-tailwind-class block inline'); // non-tailwind-class inline
您可以以字符串、数组或两者的组合形式传递类
$tw->merge('h-10 h-20'); // h-20 $tw->merge(['h-10', 'h-20']); // h-20 $tw->merge(['h-10', 'h-20'], 'h-30'); // h-30 $tw->merge(['h-10', 'h-20'], 'h-30', ['h-40']); // h-40
缓存
为了提高性能,TailwindClassMerge 可以缓存合并操作的结果。要激活,请将您的缓存实例传递给 withCache 方法。
它接受任何 PSR-16 兼容的缓存实现。
TailwindClassMerge::factory() ->withCache($cache) ->make();
当您更改配置时,请确保清除缓存。
配置
如果您没有使用任何额外配置使用 Tailwind CSS,则可以直接使用 TailwindClassMerge。到此为止即可。
如果您正在使用自定义 Tailwind 配置,可能需要配置 TailwindClassMerge 以正确合并类。
默认情况下,TailwindClassMerge 以一种方式配置,如果以下所有内容都适用于您的 Tailwind 配置,则您仍然可以使用它
- 只使用不与其他 Tailwind 类名冲突的颜色名称
- 仅通过基于数字的 Tailwind 类的数值进行偏差
- 仅使用不与默认字体重量类冲突的字体家族类
- 对于所有其他内容都坚持默认 Tailwind 配置
如果其中一些点不适用于您,则需要自定义配置。
以下是一个添加自定义字体大小 "very-large" 的示例
TailwindClassMerge::factory()->withConfiguration([ 'classGroups' => [ 'font-size' => [ ['text' => ['very-large']] ], ], ])->make();
有关配置选项的更详细说明,请访问 原始包文档。
贡献
感谢您考虑为 TailwindClassMerge for PHP 贡献!贡献指南可以在 CONTRIBUTING.md 文件中找到。
TailwindClassMerge for PHP 是一个开源软件,许可协议为 MIT 协议。
