devanoxltd/tailwind-class-merge-php

TailwindClassMerge for PHP 通过自动解决它们之间的冲突来合并多个 Tailwind CSS 类

v2.1.0 2024-06-11 06:59 UTC

This package is auto-updated.

Last update: 2024-09-11 07:44:57 UTC


README

TailwindClassMerge for PHP

GitHub Workflow Status (main) Total Downloads Latest Version License

TailwindClassMerge for PHP 允许您合并多个 Tailwind CSS 类,并通过删除与后面定义的类冲突的类来自动解决类之间的冲突。

dcastil 编写的 tailwind-merge 的 PHP 版本。并从 gehrisandrotailwind-merge-php 中克隆和改进。

支持 Tailwind v3.0 至 v3.4。

如果您觉得这个包很有帮助,请考虑赞助维护者

注意:此包仍在早期开发阶段。

如果您正在使用 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 协议