From 1039f30551ec20efd3d817857b4971c15a97849f Mon Sep 17 00:00:00 2001 From: Jordan Brough Date: Fri, 22 May 2026 07:33:21 -0600 Subject: [PATCH 1/2] Support new `--silent` tailwind flag via `tailwindcss:build[silent]` If the tailwind version doesn't support the flag it will be silently ignored. --- CHANGELOG.md | 7 +++++++ README.md | 2 ++ lib/tailwindcss/commands.rb | 5 ++++- lib/tasks/build.rake | 6 ++++-- test/lib/tailwindcss/commands_test.rb | 16 ++++++++++++++++ 5 files changed, 33 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1252a2..488546e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # `tailwindcss-rails` Changelog +## next / unreleased + +### Improved + +* New `silent` flag on `tailwindcss:build` and `tailwindcss:watch` tasks to suppress non-error output from the tailwindcss CLI (e.g., `bin/rails tailwindcss:watch[silent]`). Requires the tailwindcss CLI's `--silent` option, which was added in https://github.com/tailwindlabs/tailwindcss/pull/20100 (post-v4.3.0). + + ## v4.4.0 / 2025-10-27 ### Changed diff --git a/README.md b/README.md index 320564c..581c17b 100644 --- a/README.md +++ b/README.md @@ -266,10 +266,12 @@ Synopsis: - `bin/rails tailwindcss:install` - installs the configuration file, output file, and `Procfile.dev` - `bin/rails tailwindcss:build` - generate the output file - `bin/rails tailwindcss:build[debug]` - generate unminimized output + - `bin/rails tailwindcss:build[silent]` - suppress non-error output from tailwindcss (requires tailwindcss CLI support for `--silent`) - `bin/rails tailwindcss:build[verbose]` - emit the commands being run - `bin/rails tailwindcss:watch` - start live rebuilds, generating output on file changes - `bin/rails tailwindcss:watch[debug]` - generate unminimized output - `bin/rails tailwindcss:watch[always]` - for systems without TTY (e.g., some docker containers) + - `bin/rails tailwindcss:watch[silent]` - suppress non-error output from tailwindcss (requires tailwindcss CLI support for `--silent`) - `bin/rails tailwindcss:watch[verbose]` - emit the commands being run Note that you can combine task options, e.g. `rails tailwindcss:watch[debug,always]`. diff --git a/lib/tailwindcss/commands.rb b/lib/tailwindcss/commands.rb index 9c910de..2054ea0 100644 --- a/lib/tailwindcss/commands.rb +++ b/lib/tailwindcss/commands.rb @@ -3,7 +3,7 @@ module Tailwindcss module Commands class << self - def compile_command(debug: false, **kwargs) + def compile_command(debug: false, silent: false, **kwargs) debug = ENV["TAILWINDCSS_DEBUG"].present? if ENV.key?("TAILWINDCSS_DEBUG") rails_root = defined?(Rails) ? Rails.root : Pathname.new(Dir.pwd) @@ -14,6 +14,9 @@ def compile_command(debug: false, **kwargs) ] command << "--minify" unless (debug || rails_css_compressor?) + if silent + command << "--silent" + end postcss_path = rails_root.join("postcss.config.js") command += ["--postcss", postcss_path.to_s] if File.exist?(postcss_path) diff --git a/lib/tasks/build.rake b/lib/tasks/build.rake index 539a8df..991b5b2 100644 --- a/lib/tasks/build.rake +++ b/lib/tasks/build.rake @@ -2,9 +2,10 @@ namespace :tailwindcss do desc "Build your Tailwind CSS" task build: [:environment, :engines] do |_, args| debug = args.extras.include?("debug") + silent = args.extras.include?("silent") verbose = args.extras.include?("verbose") - command = Tailwindcss::Commands.compile_command(debug: debug) + command = Tailwindcss::Commands.compile_command(debug: debug, silent: silent) env = Tailwindcss::Commands.command_env(verbose: verbose) puts "Running: #{Shellwords.join(command)}" if verbose @@ -15,9 +16,10 @@ namespace :tailwindcss do task watch: [:environment, :engines] do |_, args| debug = args.extras.include?("debug") always = args.extras.include?("always") + silent = args.extras.include?("silent") verbose = args.extras.include?("verbose") - command = Tailwindcss::Commands.watch_command(always: always, debug: debug) + command = Tailwindcss::Commands.watch_command(always: always, debug: debug, silent: silent) env = Tailwindcss::Commands.command_env(verbose: verbose) puts "Running: #{Shellwords.join(command)}" if verbose diff --git a/test/lib/tailwindcss/commands_test.rb b/test/lib/tailwindcss/commands_test.rb index 62d1e68..a5bd961 100644 --- a/test/lib/tailwindcss/commands_test.rb +++ b/test/lib/tailwindcss/commands_test.rb @@ -59,6 +59,16 @@ def setup end end + test ".compile_command silent flag" do + Rails.stub(:root, File) do # Rails.root won't work in this test suite + actual = Tailwindcss::Commands.compile_command + refute_includes(actual, "--silent") + + actual = Tailwindcss::Commands.compile_command(silent: true) + assert_includes(actual, "--silent") + end + end + test ".compile_command when Rails compression is on" do Rails.stub(:root, File) do # Rails.root won't work in this test suite Tailwindcss::Commands.stub(:rails_css_compressor?, true) do @@ -116,6 +126,12 @@ def setup assert_equal(executable, actual.first) assert_includes(actual, "-w") assert_includes(actual, "always") + + actual = Tailwindcss::Commands.watch_command(silent: true) + assert_kind_of(Array, actual) + assert_equal(executable, actual.first) + assert_includes(actual, "-w") + assert_includes(actual, "--silent") end end end From 2b0048fe0784635c0908c2093cbc4007caa08aac Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Mon, 15 Jun 2026 09:13:04 -0400 Subject: [PATCH 2/2] style: place conditional concatenation on one line --- lib/tailwindcss/commands.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/tailwindcss/commands.rb b/lib/tailwindcss/commands.rb index 2054ea0..7f5643f 100644 --- a/lib/tailwindcss/commands.rb +++ b/lib/tailwindcss/commands.rb @@ -14,9 +14,7 @@ def compile_command(debug: false, silent: false, **kwargs) ] command << "--minify" unless (debug || rails_css_compressor?) - if silent - command << "--silent" - end + command << "--silent" if silent postcss_path = rails_root.join("postcss.config.js") command += ["--postcss", postcss_path.to_s] if File.exist?(postcss_path)