gem tailwind-railsをv3→v4へアップグレード
はじめに
こんにちは!Koheiと申します。
今回は Railsのgemであるtailwind-railsのアップグレードについて、記事にまとめておこうと思います。
初学者のため、内容に間違い等ありましたら、優しく教えていただけますと幸いです。
対処の読者
- gem tailwindrailsをv3でインストールして開発している
- Daisy UIをv4でインストールして開発している
- Tailwind v4に興味があり、どうしたら良いのか分からない
- READMEのアップグレードガイドが英語でわけわからず、お手上げな方
参考
解説する内容は、ほぼほぼ公式の言う通りになります!
参考にした内容は以下です。
公式GitHubリポジトリ
Tailwind公式 アップグレードガイド
DaysiUI公式 アップグレードガイド
本編
Gemfileを書き換える
まず、Gemfileを書き換えましょう。
Taiwind-railsを使っている方は下記のような記述があるはずなので、バージョンを書き換えます・
gem "tailwindcss-rails", "~> 4.0"
gem "tailwindcss-ruby" #v3になるように指定していたので、version情報は消しておく。
ターミナルでbundle install
します。
Dockerを使っていれば、docker compose exec web bundle install
です。
bundle install
そうすると、ターミナルが下記のようなログになるはずです。
mian@MiANnoMacBook-Air test_tailwind % docker compose exec web bundle install
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Fetching tailwindcss-ruby 4.1.5 (aarch64-linux-gnu) (was 3.4.17)
Installing tailwindcss-ruby 4.1.5 (aarch64-linux-gnu) (was 3.4.17)
Fetching tailwindcss-rails 4.2.3 (was 3.3.2)
Installing tailwindcss-rails 4.2.3 (was 3.3.2)
WARN: Unresolved or ambiguous specs during Gem::Specification.reset:
stringio (>= 0)
Available/installed versions of this gem:
- 3.1.7
- 3.1.5
- 3.1.1
WARN: Clearing out unresolved specs. Try 'gem cleanup <gem>'
Please report a bug if this causes problems.
Bundle complete! 18 Gemfile dependencies, 104 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
Post-install message from tailwindcss-rails:
== Upgrading to Tailwind CSS v4 ==
If you are upgrading to tailwindcss-rails 4.x, please read the upgrade guide at:
https://github.com/rails/tailwindcss-rails/blob/main/README.md#upgrading-your-application-from-tailwind-v3-to-v4
If you're not ready to upgrade yet, please pin to version 3 in your Gemfile:
gem "tailwindcss-rails", "~> 3.3.1"
1 installed gem you directly depend on is looking for funding.
Run `bundle fund` for details
package.json
にtailwindcssv3を追記
↑上のログを読んで頂くと == Upgrading to Tailwind CSS v4 ==
の後に、公式GitHubリポジトリのREADMEを読めと書いています。
読んでみると、「package.json
に"tailwindcss": "^3.4.17"
を絶対かけ!」と書いているのでその通りにします。
(おそらく、npmとyarnでアップグレードするために必要なのだと思います。)
{
"name": "app",
"private": true,
"devDependencies": {
"daisyui": "4",
"esbuild": "^0.25.3",
"tailwindcss": "^3.4.17" //この追記が必須!
},
"scripts": {
"build": "esbuild app/javascript/*.* --bundle --sourcemap --format=esm --outdir=app/assets/builds --public-path=/assets"
},
"dependencies": {
"@hotwired/stimulus": "^3.2.2",
"@hotwired/turbo-rails": "^8.0.13",
"postcss": "^8.5.3"
}
}
私はyarnを使用しているので、yarn install
します。
Dockerを使用している方は、docker compose exec web yarn install
です。
yarn install
そうすると下記のようなログになります。
mian@MiANnoMacBook-Air test_tailwind % docker compose exec web yarn install
yarn install v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 45.20s.
config/tailwind.config.js
を変更
config/tailwind.config.js
を変更を変更します。書き換えるのは。contentの中です!
よく見ると、階層が変わっていますね。
つまり、v3とv4でtailwindプラグインをいれる位置が変わっるということになります。
ここで、もしDaysi UIなどを使用していれば、pluginsの中も一旦消してください!消さないとエラーになるので⚠️注意!(記事の最後でアップグレードを解説します)
const defaultTheme = require('tailwindcss/defaultTheme')
module.exports = {
content: [
'../public/*.html',
'../app/helpers/**/*.rb',
'../app/javascript/**/*.js',
'../app/views/**/*.{erb,haml,html,slim}'
],
theme: {
extend: {
fontFamily: {
sans: ['Inter var', ...defaultTheme.fontFamily.sans],
},
},
},
plugins: [
// require('@tailwindcss/forms'),
// require('@tailwindcss/typography'),
// require('@tailwindcss/container-queries'),
]
}
アップグレードコマンドを実施する
tailwindのアップグレードを実施します。ターミナルで以下のコマンドを実施。
Dockerの方は、docker compose exec web rails tailwindcss:upgrade
です。
rails tailwindcss:upgrade
mian@MiANnoMacBook-Air graduation_app_pj % docker compose exec web rails tailwindcss:upgrade
apply /usr/local/bundle/gems/tailwindcss-rails-4.2.3/lib/install/upgrade_tailwindcss.rb
Removing references to 'defaultTheme' from /myapp/config/tailwind.config.js
gsub config/tailwind.config.js
Strip Inter font CSS from application layout
gsub app/views/layouts/application.html.erb
Moving /myapp/app/assets/stylesheets/application.tailwind.css to /myapp/app/assets/tailwind/application.css
create app/assets/tailwind/application.css
remove app/assets/stylesheets/application.tailwind.css
10.8.2
Running the upstream Tailwind CSS upgrader
run npx @tailwindcss/upgrade@4.1.4 --force --config /myapp/config/tailwind.config.js from "."
Need to install the following packages:
@tailwindcss/upgrade@4.1.4
Ok to proceed? (y)
Ok to proceed? (y)
と聞かれるので、yキーを押したあとで、Enterキー。
Ok to proceed? (y) y
≈ tailwindcss v4.1.4
│ Searching for CSS files in the current directory and its subdirectories…
│ ↳ Linked `./config/tailwind.config.js` to `./app/assets/tailwind/application.css`
│ Migrating JavaScript configuration files…
│ ↳ The configuration file at `./config/tailwind.config.js` could not be automatically migrated to the new CSS configuration format, so your CSS has been updated to load your
│ existing configuration file.
│ Migrating templates…
│ ↳ Migrated templates for configuration file: `./config/tailwind.config.js`
│ Migrating stylesheets…
│ ↳ Migrated stylesheet: `./app/assets/tailwind/application.css`
│ ↳ No PostCSS config found, skipping migration.
│ Updating dependencies…
│ ↳ Updated package: `tailwindcss`
│ Verify the changes and commit them to your repository.
npm notice
npm notice New major version of npm available! 10.8.2 -> 11.4.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.4.1
npm notice To update run: npm install -g npm@11.4.1
npm notice
Compile initial Tailwind build
run rails tailwindcss:build from "."
≈ tailwindcss v4.1.8
Done in 398ms
run bundle install --quiet
これでアップグレードが完了です!
一度。railサーバーやDockerを再起動して、挙動を確かめてみてください!
簡単でしたね!
Daysi UIのアップグレード
私はDaysi UIを使用していたので、それも更新します。
Dockerを使用している方は、docker compose exec web yarn add -D daisyui@latest
です。
yarn add -D daisyui@latest
下記のようなログが出れば成功です。
mian@MiANnoMacBook-Air test_tailwind % docker compose exec web yarn add -D daisyui@latest
yarn add v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ daisyui@5.0.35
info All dependencies
└─ daisyui@5.0.35
Done in 1.10s.
これで、Daysi UIのアップグレードも完了です。
一度。railサーバーやDockerを再起動して、挙動を確かめてみてください!
以上です!お疲れ様でした!
Discussion