Skip to content

Commit df61ebc

Browse files
authored
Merge pull request #107 from aptinio/tailwind-v4
Update tailwind to version 4.0.0
2 parents e3cfa8d + c5fa532 commit df61ebc

File tree

5 files changed

+30
-60
lines changed

5 files changed

+30
-60
lines changed

README.md

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Once installed, change your `config/config.exs` to pick your
3939
tailwind version of choice:
4040

4141
```elixir
42-
config :tailwind, version: "3.2.4"
42+
config :tailwind, version: "4.0.0"
4343
```
4444

4545
Now you can install tailwind by running:
@@ -74,14 +74,13 @@ directory, the OS environment, and default arguments to the
7474

7575
```elixir
7676
config :tailwind,
77-
version: "3.2.4",
77+
version: "4.0.0",
7878
default: [
7979
args: ~w(
80-
--config=tailwind.config.js
81-
--input=css/app.css
82-
--output=../priv/static/assets/app.css
80+
--input=assets/css/app.css
81+
--output=priv/static/assets/app.css
8382
),
84-
cd: Path.expand("../assets", __DIR__)
83+
cd: Path.expand("..", __DIR__)
8584
]
8685
```
8786

@@ -100,8 +99,8 @@ First add it as a dependency in your `mix.exs`:
10099
```elixir
101100
def deps do
102101
[
103-
{:phoenix, "~> 1.6"},
104-
{:tailwind, "~> 0.1.8", runtime: Mix.env() == :dev}
102+
{:phoenix, "~> 1.7"},
103+
{:tailwind, "~> 0.2.4", runtime: Mix.env() == :dev}
105104
]
106105
end
107106
```
@@ -113,21 +112,19 @@ alias for deployments (with the `--minify` option):
113112
"assets.deploy": ["tailwind default --minify", ..., "phx.digest"]
114113
```
115114

116-
Now let's change `config/config.exs` to tell `tailwind` to use
117-
configuration in `assets/tailwind.config.js` for building our css
118-
bundle into `priv/static/assets`. We'll also give it our `assets/css/app.css`
119-
as our css entry point:
115+
Now let's change `config/config.exs` to tell `tailwind`
116+
to build our css bundle into `priv/static/assets`.
117+
We'll also give it our `assets/css/app.css` as our css entry point:
120118

121119
```elixir
122120
config :tailwind,
123-
version: "3.2.4",
121+
version: "4.0.0",
124122
default: [
125123
args: ~w(
126-
--config=tailwind.config.js
127-
--input=css/app.css
128-
--output=../priv/static/assets/app.css
124+
--input=assets/css/app.css
125+
--output=priv/static/assets/app.css
129126
),
130-
cd: Path.expand("../assets", __DIR__)
127+
cd: Path.expand("..", __DIR__)
131128
]
132129
```
133130

@@ -139,10 +136,10 @@ the web application's asset directory in the configuration:
139136

140137
```elixir
141138
config :tailwind,
142-
version: "3.2.4",
139+
version: "4.0.0",
143140
default: [
144141
args: ...,
145-
cd: Path.expand("../apps/<folder_ending_with_web>/assets", __DIR__)
142+
cd: Path.expand("../apps/<folder_ending_with_web>", __DIR__)
146143
]
147144
```
148145

config/config.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import Config
22

33
config :tailwind,
4-
version: "3.4.6",
4+
version: "4.0.0",
55
another: [
66
args: ["--help"]
77
]

lib/mix/tasks/tailwind.install.ex

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -75,36 +75,9 @@ defmodule Mix.Tasks.Tailwind.Install do
7575
else
7676
if Keyword.get(opts, :assets, true) do
7777
File.mkdir_p!("assets/css")
78-
tailwind_config_path = Path.expand("assets/tailwind.config.js")
7978

8079
prepare_app_css()
8180
prepare_app_js()
82-
83-
unless File.exists?(tailwind_config_path) do
84-
File.write!(tailwind_config_path, """
85-
// See the Tailwind configuration guide for advanced usage
86-
// https://tailwindcss.com/docs/configuration
87-
88-
let plugin = require('tailwindcss/plugin')
89-
90-
module.exports = {
91-
content: [
92-
'./js/**/*.js',
93-
'../lib/*_web.ex',
94-
'../lib/*_web/**/*.*ex'
95-
],
96-
theme: {
97-
extend: {},
98-
},
99-
plugins: [
100-
require('@tailwindcss/forms'),
101-
plugin(({addVariant}) => addVariant('phx-click-loading', ['&.phx-click-loading', '.phx-click-loading &'])),
102-
plugin(({addVariant}) => addVariant('phx-submit-loading', ['&.phx-submit-loading', '.phx-submit-loading &'])),
103-
plugin(({addVariant}) => addVariant('phx-change-loading', ['&.phx-change-loading', '.phx-change-loading &']))
104-
]
105-
}
106-
""")
107-
end
10881
end
10982

11083
if function_exported?(Mix, :ensure_application!, 1) do
@@ -131,9 +104,11 @@ defmodule Mix.Tasks.Tailwind.Install do
131104

132105
unless app_css =~ "tailwind" do
133106
File.write!("assets/css/app.css", """
134-
@import "tailwindcss/base";
135-
@import "tailwindcss/components";
136-
@import "tailwindcss/utilities";
107+
@import "tailwindcss";
108+
@plugin "@tailwindcss/forms";
109+
@variant phx-click-loading ([".phx-click-loading&", ".phx-click-loading &"]);
110+
@variant phx-submit-loading ([".phx-submit-loading&", ".phx-submit-loading &"]);
111+
@variant phx-change-loading ([".phx-change-loading&", ".phx-change-loading &"]);
137112
138113
#{String.replace(app_css, ~s|@import "./phoenix.css";\n|, "")}\
139114
""")

lib/tailwind.ex

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
defmodule Tailwind do
22
# https://github.com/tailwindlabs/tailwindcss/releases
3-
@latest_version "3.4.6"
3+
@latest_version "4.0.0"
44

55
@moduledoc """
66
Tailwind is an installer and runner for [tailwind](https://tailwindcss.com/).
@@ -15,7 +15,6 @@ defmodule Tailwind do
1515
version: "#{@latest_version}",
1616
default: [
1717
args: ~w(
18-
--config=tailwind.config.js
1918
--input=css/app.css
2019
--output=../priv/static/assets/app.css
2120
),
@@ -123,7 +122,6 @@ defmodule Tailwind do
123122
version: "#{@latest_version}",
124123
#{profile}: [
125124
args: ~w(
126-
--config=tailwind.config.js
127125
--input=css/app.css
128126
--output=../priv/static/assets/app.css
129127
),

test/tailwind_test.exs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ defmodule TailwindTest do
77
Application.put_env(:tailwind, :version, @version)
88
File.mkdir_p!("assets/js")
99
File.mkdir_p!("assets/css")
10-
File.rm("assets/tailwind.config.js")
1110
File.rm("assets/css/app.css")
1211
:ok
1312
end
@@ -31,17 +30,16 @@ defmodule TailwindTest do
3130
end
3231

3332
test "updates on install" do
34-
Application.put_env(:tailwind, :version, "3.0.3")
33+
Application.put_env(:tailwind, :version, "3.4.17")
3534
Mix.Task.rerun("tailwind.install", ["--if-missing"])
3635

3736
assert ExUnit.CaptureIO.capture_io(fn ->
3837
assert Tailwind.run(:default, ["--help"]) == 0
39-
end) =~ "3.0.3"
38+
end) =~ "3.4.17"
4039

4140
Application.delete_env(:tailwind, :version)
4241

4342
Mix.Task.rerun("tailwind.install", ["--if-missing"])
44-
assert File.exists?("assets/tailwind.config.js")
4543
assert File.read!("assets/css/app.css") =~ "tailwind"
4644

4745
assert ExUnit.CaptureIO.capture_io(fn ->
@@ -66,9 +64,11 @@ defmodule TailwindTest do
6664

6765
expected_css =
6866
String.trim("""
69-
@import "tailwindcss/base";
70-
@import "tailwindcss/components";
71-
@import "tailwindcss/utilities";
67+
@import "tailwindcss";
68+
@plugin "@tailwindcss/forms";
69+
@variant phx-click-loading ([".phx-click-loading&", ".phx-click-loading &"]);
70+
@variant phx-submit-loading ([".phx-submit-loading&", ".phx-submit-loading &"]);
71+
@variant phx-change-loading ([".phx-change-loading&", ".phx-change-loading &"]);
7272
7373
body {
7474
}

0 commit comments

Comments
 (0)