Integrate Tailwind CSS without JavaScript or npm.
Project description
plain.tailwind
Integrate Tailwind CSS without JavaScript or npm.
Overview
You can use Tailwind CSS in your Plain project without Node.js or npm. This package automatically downloads and manages the Tailwind standalone CLI for you.
Initialize Tailwind in your project:
plain tailwind init
This creates a tailwind.css source file in your project root. Then compile your CSS:
plain tailwind build
For development, use watch mode to automatically recompile when files change:
plain tailwind build --watch
Include the compiled CSS in your templates:
<!DOCTYPE html>
<html>
<head>
{% tailwind_css %}
</head>
<body>
<h1 class="text-3xl font-bold text-blue-600">Hello, Tailwind!</h1>
</body>
</html>
CLI commands
plain tailwind init
Sets up Tailwind in your project. This command:
- Downloads the Tailwind standalone CLI (if not already installed)
- Creates a
tailwind.csssource file in your project root
plain tailwind init
plain tailwind build
Compiles your Tailwind CSS from the source file to app/assets/tailwind.min.css.
# One-time build
plain tailwind build
# Watch mode for development
plain tailwind build --watch
# Minified build for production
plain tailwind build --minify
The build command automatically installs or updates the Tailwind CLI if needed.
plain tailwind update
Updates to the latest version of Tailwind CSS:
plain tailwind update
This downloads the newest version and updates your pyproject.toml.
Template tag
The tailwind_css template tag includes the compiled CSS file in your templates. Place it in your base template's <head>:
<!DOCTYPE html>
<html>
<head>
{% tailwind_css %}
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
The tag renders a <link> element pointing to your compiled CSS file.
Settings
| Setting | Default | Env var |
|---|---|---|
TAILWIND_SRC_PATH |
<project>/tailwind.css |
- |
TAILWIND_DIST_PATH |
app/assets/tailwind.min.css |
- |
See default_settings.py for more details.
The Tailwind version is tracked in your pyproject.toml:
[tool.plain.tailwind]
version = "4.0.0"
When you run plain tailwind build, it automatically checks if your local installation matches this version and updates if needed.
Adding custom CSS
Add custom CSS to your source file (by default tailwind.css at the project root):
@import "tailwindcss";
@import "./.plain/tailwind.css";
/* Add your custom styles here */
.btn-primary {
@apply bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded;
}
.custom-gradient {
background: linear-gradient(to right, #4f46e5, #7c3aed);
}
The @import "./.plain/tailwind.css" line includes styles from all your installed Plain packages.
Read the Tailwind docs for more about using custom styles.
Deployment
For production deployments:
- Add
app/assets/tailwind.min.cssto your.gitignore - Run
plain tailwind build --minifyas part of your deployment process
The build command automatically installs the Tailwind CLI if it is not present, making deployments seamless.
You can automate this by adding a build command to your pyproject.toml:
[tool.plain.build.run]
tailwind = {cmd = "plain tailwind build --minify"}
FAQs
How does this work without Node.js?
Tailwind provides a standalone CLI that bundles everything needed to compile CSS. This package downloads the appropriate binary for your platform (macOS, Linux, or Windows) and manages it for you.
Where is the Tailwind CLI stored?
The Tailwind binary and version information are stored in a .plain directory in your project root. Add this to your .gitignore:
.plain/
How do I use Tailwind classes from other Plain packages?
The @import "./.plain/tailwind.css" line in your source CSS automatically includes @source directives for all installed Plain packages. This ensures Tailwind scans those packages for class usage.
Can I use Tailwind plugins?
The standalone CLI includes all first-party plugins. For third-party plugins that require npm, you would need to use the standard Tailwind installation instead.
Installation
Install the plain.tailwind package from PyPI:
uv add plain.tailwind
Add plain.tailwind to your INSTALLED_PACKAGES:
# app/settings.py
INSTALLED_PACKAGES = [
# ...
"plain.tailwind",
]
Add .plain/ to your .gitignore:
.plain/
Initialize Tailwind in your project:
plain tailwind init
Add the tailwind_css template tag to your base template:
<!DOCTYPE html>
<html>
<head>
{% tailwind_css %}
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
Run the build command to compile your CSS:
plain tailwind build --watch
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file plain_tailwind-0.20.5.tar.gz.
File metadata
- Download URL: plain_tailwind-0.20.5.tar.gz
- Upload date:
- Size: 8.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b529b4908155e3c5d14adcdd71b748a2e62492a10432dd285e53cad4707b9194
|
|
| MD5 |
874bdedd6ef49400bc346dd6b7f9c436
|
|
| BLAKE2b-256 |
ff2bd182fa163cf17e9589f1cd0e2f3a9d897ae8bd0ef001c739f7ae538981e5
|
File details
Details for the file plain_tailwind-0.20.5-py3-none-any.whl.
File metadata
- Download URL: plain_tailwind-0.20.5-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d16b6c25af2e51be14846ab2751c3f5c6ed74c9ad22ec292f05137dafffb6101
|
|
| MD5 |
427794e8f838a5f65b154134a368181e
|
|
| BLAKE2b-256 |
6f4a75551331e91e02c409a8b320089cea30e970ab58f8b6a6999fd3a6a0cfcd
|