From b9ba27a3d6d5211837d7a76ef70d33cae6c5207d Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Thu, 17 Oct 2024 11:14:16 -0400 Subject: [PATCH] Add support for Tailwind CSS v4 which doesn't need a config file or an input file anymore. Closes #419 --- lib/tailwindcss/commands.rb | 15 +++++++++++--- test/lib/tailwindcss/commands_test.rb | 28 ++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/lib/tailwindcss/commands.rb b/lib/tailwindcss/commands.rb index 26c5178..c065b91 100644 --- a/lib/tailwindcss/commands.rb +++ b/lib/tailwindcss/commands.rb @@ -3,14 +3,23 @@ module Tailwindcss module Commands class << self + def tailwindcss_version + Tailwindcss::Ruby::VERSION + end + def compile_command(debug: false, **kwargs) command = [ Tailwindcss::Ruby.executable(**kwargs), - "-i", Rails.root.join("app/assets/stylesheets/application.tailwind.css").to_s, - "-o", Rails.root.join("app/assets/builds/tailwind.css").to_s, - "-c", Rails.root.join("config/tailwind.config.js").to_s, + "-o", Rails.root.join("app/assets/builds/tailwind.css").to_s ] + unless tailwindcss_version >= "4.0" + command += [ + "-i", Rails.root.join("app/assets/stylesheets/application.tailwind.css").to_s, + "-c", Rails.root.join("config/tailwind.config.js").to_s, + ] + end + command << "--minify" unless (debug || rails_css_compressor?) postcss_path = Rails.root.join("config/postcss.config.js") diff --git a/test/lib/tailwindcss/commands_test.rb b/test/lib/tailwindcss/commands_test.rb index a273e45..ef0e80b 100644 --- a/test/lib/tailwindcss/commands_test.rb +++ b/test/lib/tailwindcss/commands_test.rb @@ -9,7 +9,33 @@ def setup @executable = Tailwindcss::Ruby.executable end - test ".compile_command" do + test ".compile_command with tailwindcss v3" do + Rails.stub(:root, File) do # Rails.root won't work in this test suite + Tailwindcss::Commands.stub(:tailwindcss_version, "3.4.13") do + actual = Tailwindcss::Commands.compile_command + assert_kind_of(Array, actual) + assert_equal(executable, actual.first) + assert_includes(actual, "-i") + assert_includes(actual, "-c") + assert_includes(actual, "-o") + end + end + end + + test ".compile_command with tailwindcss v4" do + Rails.stub(:root, File) do # Rails.root won't work in this test suite + Tailwindcss::Commands.stub(:tailwindcss_version, "4.0.0") do + actual = Tailwindcss::Commands.compile_command + assert_kind_of(Array, actual) + assert_equal(executable, actual.first) + refute_includes(actual, "-i") + refute_includes(actual, "-c") + assert_includes(actual, "-o") + end + end + end + + test ".compile_command debug flag" do Rails.stub(:root, File) do # Rails.root won't work in this test suite actual = Tailwindcss::Commands.compile_command assert_kind_of(Array, actual)