Ruby on Rails 7 , TailwindCSS 3 (esbuild) , DaisyUI 安裝設定

Ruby on Rails 真新手區

,

上一次 Rails6 Tailwind CSS 2 安裝整理與使用心得 ,過程不是開玩笑的折騰。

這一次來試試看,使用 Rails 7 安裝 Tailwind CSS 3,是不是比較舒適。另外,再加上 plugin daisyUI,看看能不能讓 Tailwind CSS 使用起來跟 Bootstrap 一樣舒適。

創建專案

新建 Rails 專案,使用 MySQL 當資料庫,設定資料庫連線檔,並且創建資料庫。

$ rails new rails7_tailwind_daisyui -d mysql -j esbuild -c tailwind
$ vim config/database.yml
$ rails db:create

只要有加參數 -j [esbuild | webpack | rollup] 預設就會多出兩個檔案 Procfile.devbin/dev

bin/dev (取代以往 rails server),這程式預設幫你檢查,如果沒有安裝 foreman 的話,會先執行 gem install foreman

$ bin/dev

確定 Rails 是否可以正常執行
http://localhost:3000

建立 post 的 CRUD

$ rails g scaffold post title:string content:text
$ rails db:migrate
$ bin/dev

http://localhost:3000/posts

試著新增2~3筆資料

1645015236-daisyui_1.png

設定 Tailwind CSS / daisyUI CSS 語法

針對 a link 分別加入 Tailwind CSS 原生語法,跟 daisyUI CSS 語法

# app/views/posts/index.html.erb
    <p style="color: green"><%= notice %></p>
    <h1>Posts</h1>
    <div id="posts">
      <% @posts.each do |post| %>
        <%= render post %>
        <p>
-          <%= link_to "Show this post", post %>
+           <%# -------- This is daisyUI style -------- %>
+           <%= link_to "Show this post", post, class: "btn btn-outline" %>
        </p>
      <% end %>
    </div>
-    <%= link_to "New post", new_post_path %>
+    <%# -------- This is pure Tailwind CSS style ------- %>
+    <%= link_to "New post", new_post_path, class: "rounded-lg py-3 px-5 bg-blue-600 text-white block font-medium" %>
$ bin/dev

http://localhost:3000/posts

1645015237-daisyui_2.png

可以看到 Tailwind CSS 在創建專案的時候已經生效。到這裡已經完成 Tailwind CSS 的安裝加設定了!!

會這麼快速簡單,除了 Rails 7 預設使用了 gem: "cssbundling-rails"gem: "jsbundling-rails"幫我們設定整合好。還有另一個原因,就是 Tailwind CSS 3 可以不用再安裝成 PostCSS 的 plugin,甚至可以不依賴 nodeJS 存在。

安裝 daisyUI plugin

現在加入 daisyUI plugin,來體驗 bootstrap 語法的 Tailwind CSS。

方法一 Use CDN (不建議)

優點:簡單快速
缺點:官方不建議,且這裡使用 jsbundling-rails 安裝的 Tailwaind CSS 不是使用 CDN,可能會某年某月衍生其他問題。

1645018657-daisyui_cdn.png

# app/views/layouts/application.html.erb
  <!DOCTYPE html>
  <html>
    <head>
      <title>Rails7TailwindDaisyui</title>
      <meta name="viewport" content="width=device-width,initial-scale=1">
      <%= csrf_meta_tags %>
      <%= csp_meta_tag %>
+     <link href="https://cdn.jsdelivr.net/npm/daisyui@2.0.6/dist/full.css" rel="stylesheet" type="text/css" />
      <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
      <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>
    </head>

    <body>
      <%= yield %>
    </body>
  </html>

方法二 安裝成Tailwind Plugin (建議)

優點:簡單、快速、正規、官方建議
缺點:過程只多了 2 - 3 個步驟

$ yarn add daisyui
$ vim tailwind.config.js
// tailwind.config.js
  module.exports = {
    content: [
      './app/views/**/*.html.erb',
      './app/helpers/**/*.rb',
      './app/javascript/**/*.js'
+   ],
+   plugins: [
+     require("daisyui")
+   ]
  }

每次修改完 tailwind.config.js需要重啟 foreman

$ bin/dev

完成 daisyUI plugin 的安裝

可以看到,已經可以正常呈現 class: "btn btn-outline"a link

1645015237-daisyui_3.png

補充:把 Tailwind CSS official plugins 一起加入

也可以試著把 Tailwind CSS 官方的 plugins 也一起加入,體驗一下 Tailwind CSS 加裝 plugins 的感覺。(實際上,不一定要加入這些 official plugins,這裡只是練習在 Tailwind CSS 裡面安裝 Plugins)

$ yarn add @tailwindcss/typography @tailwindcss/forms @tailwindcss/line-clamp @tailwindcss/aspect-ratio
// tailwind.config.js
  module.exports = {
    content: [
      './app/views/**/*.html.erb',
      './app/helpers/**/*.rb',
      './app/javascript/**/*.js'
   ],
   plugins: [
+     require('@tailwindcss/forms'),
+     require('@tailwindcss/line-clamp'),
+     require('@tailwindcss/aspect-ratio'),
+     require('@tailwindcss/typography'),
     require("daisyui")
    ]
  }

每次修改完 tailwind.config.js需要重啟 foreman

$ bin/dev

Tailwind CSS official plugins (@tailwindcss/typography @tailwindcss/forms @tailwindcss/line-clamp @tailwindcss/aspect-ratio) 加入前後差別
1645015873-tailwind_official_plugins.png

結論

Rails 7 安裝 Tailwind CSS 3 外掛 DaisyUI,便利舒適多很多。Rails 7 替 CSS 框架使用者,把該注意的都處理完了。

其他好用外掛參考