Glailglind - Tailwind for Gleam
Installs and invokes TailwindCSS CLI.
Heavily inspired by phoenixframework/tailwind.
Compatible with Erlang and Javascript targets. (Javascript target requires curl to be available on the host)
Usage as module
Install Package
gleam add glailglind --dev
Configure TailwindCSS
You can configure TailwindCSS in your gleam.toml by adding a tailwind table:
[tailwind] version = "4.0.8" # optional args = [ "--input=./src/css/app.css", "--output=./priv/css/app.css" ] path = "/path/to/tailwindcss" # optional
This lets you define the arguments being run.
Optionally define a specific TailwindCSS version or the direct path to the TailwindCSS CLI, if you don't want it to be installed automatically.
Install TailwindCSS
gleam run -m tailwind/install
This downloads the Tailwind CLI to ./build/bin/tailwindcss and generates the input.css in the root of the project.
Import Tailwind in your CSS
Run TailwindCSS
gleam run -m tailwind/run
Executes tailwind with the defined arguments.
Usage with LustreSSG
ℹ️ Lustre Dev Tools have their own TailwindCSS support!
Install Package
(Optional) Specify version in config
gleam.toml
[tailwind] version = "4.0.8"
Install TailwindCSS
gleam run -m tailwind/install
Import Tailwind in your CSS
Update build script
Import tailwind and add the run step to your build script.
Example:
import gleam/list import gleam/map import gleam/io import gleam/result // Some data for your site import app/data/posts // Some functions for rendering pages import app/page/index import app/page/blog import app/page/post // Import the static site generator import lustre/ssg // Import Tailwind import tailwind pub fn main() { let posts = map.from_list({ use post <- list.map(posts.all()) #(post.id, post) }) let build = ssg.new("./priv") |> ssg.add_static_route("/", index.view()) |> ssg.add_static_route("/blog", blog.view(posts.all())) |> ssg.add_dynamic_route("/blog", posts, post.view) |> ssg.build |> result.map_error(fn(e) { string.inspect(e) }) |> result.try(fn(_) { [ "--input=./assets/css/app.css", "--output=./priv/css/app.css", ] |> tailwind.run() }) case build { Ok(m) -> { io.println(m) io.println("Build succeeded!") } Error(e) -> { io.debug(e) io.println("Build failed!") } } }