From df517c3e4ad9f7817575f9620ef8401356b8da93 Mon Sep 17 00:00:00 2001 From: Arandi Lopez Date: Mon, 27 Jan 2025 23:39:37 -0600 Subject: [PATCH 1/4] Update generator to configure tailwindcss v4 with vite plugin --- .../inertia/install/install_generator.rb | 8 +++----- .../install/templates/tailwind/application.css | 15 +++------------ .../templates/tailwind/postcss.config.js | 6 ------ .../templates/tailwind/tailwind.config.js.tt | 18 ------------------ .../install/install_generator_spec.rb | 17 +++++++++++------ 5 files changed, 17 insertions(+), 47 deletions(-) delete mode 100644 lib/generators/inertia/install/templates/tailwind/postcss.config.js delete mode 100644 lib/generators/inertia/install/templates/tailwind/tailwind.config.js.tt diff --git a/lib/generators/inertia/install/install_generator.rb b/lib/generators/inertia/install/install_generator.rb index 7686a164..8be1f917 100644 --- a/lib/generators/inertia/install/install_generator.rb +++ b/lib/generators/inertia/install/install_generator.rb @@ -151,11 +151,9 @@ def install_example_page def install_tailwind say 'Installing Tailwind CSS' - add_dependencies(%w[tailwindcss postcss autoprefixer @tailwindcss/forms @tailwindcss/typography - @tailwindcss/container-queries]) - - template 'tailwind/tailwind.config.js', file_path('tailwind.config.js') - copy_file 'tailwind/postcss.config.js', file_path('postcss.config.js') + add_dependencies(%w[tailwindcss @tailwindcss/vite @tailwindcss/forms @tailwindcss/typography]) + prepend_file vite_config_path, "import tailwindcss from '@tailwindcss/vite'\n" + insert_into_file vite_config_path, "\n tailwindcss(),\n", after: 'plugins: [' copy_file 'tailwind/application.css', js_file_path('entrypoints/application.css') if application_layout.exist? diff --git a/lib/generators/inertia/install/templates/tailwind/application.css b/lib/generators/inertia/install/templates/tailwind/application.css index 8666d2f3..7577becc 100644 --- a/lib/generators/inertia/install/templates/tailwind/application.css +++ b/lib/generators/inertia/install/templates/tailwind/application.css @@ -1,13 +1,4 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; +@import "tailwindcss"; -/* - -@layer components { - .btn-primary { - @apply py-2 px-4 bg-blue-200; - } -} - -*/ +@plugin "@tailwindcss/typography"; +@plugin "@tailwindcss/forms"; diff --git a/lib/generators/inertia/install/templates/tailwind/postcss.config.js b/lib/generators/inertia/install/templates/tailwind/postcss.config.js deleted file mode 100644 index 2e7af2b7..00000000 --- a/lib/generators/inertia/install/templates/tailwind/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/lib/generators/inertia/install/templates/tailwind/tailwind.config.js.tt b/lib/generators/inertia/install/templates/tailwind/tailwind.config.js.tt deleted file mode 100644 index dae93715..00000000 --- a/lib/generators/inertia/install/templates/tailwind/tailwind.config.js.tt +++ /dev/null @@ -1,18 +0,0 @@ -/** @type {import('tailwindcss').Config} */ - -module.exports = { - content: [ - './public/*.html', - './app/helpers/**/*.rb', - './<%= js_destination_path %>/**/*.{js,ts,jsx,tsx,vue,svelte}', - './app/views/**/*.{erb,haml,html,slim}' - ], - theme: { - extend: {}, - }, - plugins: [ - require('@tailwindcss/forms'), - require('@tailwindcss/typography'), - require('@tailwindcss/container-queries'), - ] -} diff --git a/spec/generators/install/install_generator_spec.rb b/spec/generators/install/install_generator_spec.rb index e7341194..9c43cbab 100644 --- a/spec/generators/install/install_generator_spec.rb +++ b/spec/generators/install/install_generator_spec.rb @@ -55,8 +55,6 @@ directory('app/frontend') do no_file('entrypoints/application.css') end - no_file('postcss.config.js') - no_file('tailwind.config.js') end) end end @@ -67,7 +65,7 @@ before { prepare_application } - it 'installs Tailwind' do + it 'installs Tailwind with vite plugin' do expect { generator }.not_to raise_error expect_tailwind_config end @@ -134,10 +132,17 @@ def prepare_application(with_vite: true) def expect_tailwind_config expect(destination_root).to(have_structure do directory('app/frontend') do - file('entrypoints/application.css') + file('entrypoints/application.css') do + contains('@import "tailwindcss";') + end + end + file('package.json') do + contains('"tailwindcss":') + contains('"@tailwindcss/vite":') + end + file('vite.config.ts') do + contains('tailwindcss(),') end - file('postcss.config.js') - file('tailwind.config.js') end) end From e7f02602ab3120dcd0d4e07ab6f25572ac24a65f Mon Sep 17 00:00:00 2001 From: Arandi Lopez Date: Tue, 28 Jan 2025 00:08:26 -0600 Subject: [PATCH 2/4] Remove extra linebreak --- lib/generators/inertia/install/install_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/inertia/install/install_generator.rb b/lib/generators/inertia/install/install_generator.rb index 8be1f917..abe500dc 100644 --- a/lib/generators/inertia/install/install_generator.rb +++ b/lib/generators/inertia/install/install_generator.rb @@ -153,7 +153,7 @@ def install_tailwind say 'Installing Tailwind CSS' add_dependencies(%w[tailwindcss @tailwindcss/vite @tailwindcss/forms @tailwindcss/typography]) prepend_file vite_config_path, "import tailwindcss from '@tailwindcss/vite'\n" - insert_into_file vite_config_path, "\n tailwindcss(),\n", after: 'plugins: [' + insert_into_file vite_config_path, "\n tailwindcss(),", after: 'plugins: [' copy_file 'tailwind/application.css', js_file_path('entrypoints/application.css') if application_layout.exist? From cf31fb11bd25969a6b4182c6e2d75e6a2e095f1d Mon Sep 17 00:00:00 2001 From: Brian Knoles Date: Wed, 29 Jan 2025 23:36:33 -0500 Subject: [PATCH 3/4] Allow specs to run in Rails 6.0/7.1 --- spec/rails_helper.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 28437439..03e1f42e 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -1,4 +1,7 @@ require 'spec_helper' +# Requiring logger fixes an issue between concurrent-ruby and activesupport in Rails < 7.1 +# https://github.com/rails/rails/issues/54260 +require 'logger' ENV['RAILS_ENV'] ||= 'test' require File.expand_path('../dummy/config/environment', __FILE__) From e7ac9854e9fb7efbbaf97d7148f6e0364284cb75 Mon Sep 17 00:00:00 2001 From: Brian Knoles Date: Wed, 29 Jan 2025 23:41:12 -0500 Subject: [PATCH 4/4] Handle :inertia_version options that return either single or multiple versions --- lib/generators/inertia/install/install_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/inertia/install/install_generator.rb b/lib/generators/inertia/install/install_generator.rb index 7686a164..f72ce66b 100644 --- a/lib/generators/inertia/install/install_generator.rb +++ b/lib/generators/inertia/install/install_generator.rb @@ -265,7 +265,7 @@ def vite_tag def inertia_resolved_version @inertia_resolved_version ||= Gem::Version.new( - `npm show @inertiajs/core@#{options[:inertia_version]} version`.strip + `npm show @inertiajs/core@#{options[:inertia_version]} version --json | tail -n2 | head -n1 | tr -d '", '`.strip ) end