Add Tailwind v4 to a Phoenix application
mainTo integrate Tailwind v4 into a Phoenix application (version 1.8+):
- Dependencies: Add
:tailwindtomix.exswithruntime: Mix.env() == :dev. - Deployment: Add
tailwind default --minifyto yourassets.deployalias inmix.exs. - Configuration: In
config/config.exs, define thedefaultprofile with--inputand--outputpaths. Ensure the output directory is served byPlug.Staticin your endpoint. - Umbrella Projects: If using an umbrella, set
cdto the web application's directory. - Development Watcher: Add the Tailwind watcher to
config/dev.exsusingTailwind.install_and_runwith the--watchflag. - CSS Setup: Create
assets/css/app.cssusing@import "tailwindcss";and define@sourcepaths to prevent excessive file watching.
# mix.exs
"assets.deploy": ["tailwind default --minify", ..., "phx.digest"]# config/config.exs
config :tailwind,
version: "4.3.0",
default: [
args: ~
w(
"--input=assets/css/app.css"
"--output=priv/static/assets/css/app.css"
),
cd: Path.expand("..", __DIR__)
]# config/dev.exs
tailwind: {Tailwind, :install_and_run, [:default, ~w(--watch)]}/* assets/css/app.css */
@import "tailwindcss";
@source "../css";
@source "../js";
@source "../../lib/YOUR_APP_web";
@custom-variant phx-click-loading (.phx-click-loading&, .phx-click-loading &);
@custom-variant phx-submit-loading (.phx-submit-loading&, .phx-submit-loading &);
@custom-variant phx-change-loading (.phx-change-loading&, .phx-change-loading &);