rails8: 添加 tailwindcss4
rails8中添加 tailwind4 最新版本
01 新建项目 rails8
添加 rails8 项目
rails new . --skip-test --css tailwind02 安装 tailwindcss4
默认安装的就是 tailwind4
./bin/rails tailwindcss:install确认有这个过程
$ p ./bin/rails tailwindcss:install
apply /Users/feizheng/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/tailwindcss-rails-4.4.0/lib/install/install_tailwindcss.rb
Add Tailwindcss container element in application layout
Build into app/assets/builds
exist app/assets/builds
identical app/assets/builds/.keep
unchanged .gitignore
unchanged Procfile.dev
Add bin/dev to start foreman
force bin/dev
Compile initial Tailwind build
run rails tailwindcss:build from "."
≈ tailwindcss v4.1.18
Done in 49ms
run bundle install --quiet03 运行新的开发模式
这个时候,不要使用 rails s 来运行了
./bin/dev有可能会提示 foreman 不存在
bundle add foreman
# github 上别人的解决方案
If anyone is facing the same issue and using rbenv, you should run rbenv rehash as a new executable was installed.最好放在 dev 的依赖中
group :development do
# Use console on exceptions pages [https://github.com/rails/web-console]
gem "web-console"
gem "foreman", "~> 0.90.0"
end04 添加 tailwind.config.js 配置文件
添加配置文件

@import "tailwindcss";
@config "./tailwind.config.js"/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
'./app/views/**/*.html.erb',
'./app/helpers/**/*.rb',
'./app/assets/stylesheets/**/*.css',
'./app/javascript/**/*.js',
],
theme: {
extend: {
colors: {
primary: '#3b82f6',
secondary: '#8b5cf6',
success: '#10b981',
danger: '#ef4444',
},
spacing: {
'section': '4rem',
},
},
},
plugins: [],
}05 可能需要修复的依赖
./bin/dev 脚本最后一句(目前是这么解决的,不确认是不是有问题)
exec foreman start -f Procfile.dev "$@"变成这样
bundle exec foreman start -f Procfile.dev "$@"06 确认 index.html 保持不变
最终的 HTML 内容如下
<!DOCTYPE html>
<html>
<head>
<title><%= content_for(:title) || "Jsw Rails Ng" %></title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="application-name" content="Jsw Rails Ng">
<meta name="mobile-web-app-capable" content="yes">
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= yield :head %>
<%# Enable PWA manifest for installable apps (make sure to enable in config/routes.rb too!) %>
<%#= tag.link rel: "manifest", href: pwa_manifest_path(format: :json) %>
<link rel="icon" href="/icon.png" type="image/png">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/icon.png">
<%# Includes all stylesheet files in app/assets/stylesheets %>
<%= stylesheet_link_tag :app, "data-turbo-track": "reload" %>
</head>
<body>
<main class="container mx-auto mt-28 px-5 flex">
<%= yield %>
</main>
</body>
</html>