Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions railties/lib/rails/generators/app_base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ def jbuilder_gemfile_entry
def javascript_gemfile_entry
return [] if options[:skip_javascript]

if options[:javascript] == "importmap"
if adjusted_javascript_option == "importmap"
GemfileEntry.version("importmap-rails", ">= 0.3.4", "Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]")
else
GemfileEntry.version "jsbundling-rails", "~> 0.1.0", "Bundle and transpile JavaScript [https://github.com/rails/jsbundling-rails]"
Expand All @@ -336,6 +336,16 @@ def using_node?
options[:javascript] && options[:javascript] != "importmap"
end

# CSS processors other than Tailwind require a node-based JavaScript environment. So overwrite the normal JS default
# if one such processor has been specified.
def adjusted_javascript_option
if options[:css] && options[:css] != "tailwind" && options[:javascript] == "importmap"
"esbuild"
else
options[:javascript]
end
end

def css_gemfile_entry
return [] unless options[:css]

Expand Down Expand Up @@ -407,9 +417,9 @@ def run_bundle
def run_javascript
return if options[:skip_javascript] || !bundle_install?

case options[:javascript]
case adjusted_javascript_option
when "importmap" then rails_command "importmap:install"
when "webpack", "esbuild", "rollup" then rails_command "javascript:install:#{options[:javascript]}"
when "webpack", "esbuild", "rollup" then rails_command "javascript:install:#{adjusted_javascript_option}"
end
end

Expand Down