### Example of Canonicalization Source: https://github.com/aptinio/canonical_tailwind/blob/main/README.md Shows how Tailwind CSS classes are transformed. Unknown classes are preserved and sorted to the front. ```diff - mr-4 custom-btn flex ml-[1rem] flex + custom-btn mx-4 flex ``` -------------------------------- ### Configure Custom Tailwind CLI Binary and Input Source: https://github.com/aptinio/canonical_tailwind/blob/main/README.md Specify the path to the `tailwindcss` executable, its working directory, and the CSS entrypoint if not using the default `:tailwind` hex package setup. ```elixir # .formatter.exs [ plugins: [Phoenix.LiveView.HTMLFormatter], attribute_formatters: %{class: CanonicalTailwind}, canonical_tailwind: [ binary: "node_modules/.bin/tailwindcss", input: "css/app.css", cd: Path.expand("assets", __DIR__) ], # ... ] ``` -------------------------------- ### Configure `mix format` with Attribute Formatters Source: https://github.com/aptinio/canonical_tailwind/blob/main/README.md Integrate CanonicalTailwind into your `.formatter.exs` file by adding it to `attribute_formatters` alongside the HEEx formatter. ```elixir # .formatter.exs [ plugins: [Phoenix.LiveView.HTMLFormatter], attribute_formatters: %{class: CanonicalTailwind}, # ... ] ``` -------------------------------- ### Configure Pool Size for Parallelization Source: https://github.com/aptinio/canonical_tailwind/blob/main/README.md Adjust the number of `tailwindcss` CLI processes to parallelize `mix format`. The default is 6. Consider reducing for smaller projects or increasing for larger ones. ```elixir # .formatter.exs [ plugins: [Phoenix.LiveView.HTMLFormatter], attribute_formatters: %{class: CanonicalTailwind}, canonical_tailwind: [pool_size: 3], ] ``` -------------------------------- ### Configure Timeout for CLI Initialization Source: https://github.com/aptinio/canonical_tailwind/blob/main/README.md Increase the timeout for `tailwindcss` CLI initialization if it exceeds the default 30 seconds, especially on slower CI machines or with larger projects. Value is in milliseconds. ```elixir # .formatter.exs [ plugins: [Phoenix.LiveView.HTMLFormatter], attribute_formatters: %{class: CanonicalTailwind}, canonical_tailwind: [timeout: 60_000], ] ``` -------------------------------- ### Specify Tailwind Profile in `.formatter.exs` Source: https://github.com/aptinio/canonical_tailwind/blob/main/README.md If your project uses multiple Tailwind CSS profiles, explicitly define which profile CanonicalTailwind should use. ```elixir # .formatter.exs [ plugins: [Phoenix.LiveView.HTMLFormatter], attribute_formatters: %{class: CanonicalTailwind}, canonical_tailwind: [profile: :app], # ... ] ``` -------------------------------- ### Add CanonicalTailwind to Dependencies Source: https://github.com/aptinio/canonical_tailwind/blob/main/README.md Include CanonicalTailwind in your project's development and test dependencies in `mix.exs`. ```elixir defp deps do [ {:canonical_tailwind, "~> 0.1.0", only: [:dev, :test], runtime: false} ] end ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.