Ruby on Rails 6 및 TailwindCSS 1.1.4 설정 방법
지도의
이 강좌에서는 Ruby 및 Rails gem을 설치했다고 가정합니다.없으면 Getting Started with Rails Guide 를 방문하십시오.
나는 또한 this repo 에서 코드를 만들 것이다.당신이 곤경에 빠지거나 환매 협의가 깨질 때 미해결 문제가 발생하지 않도록 환매 협의를 일종의 자원으로 도와주십시오!!
이 프레젠테이션은 다음과 같이 작성되었습니다.
새 Rails 프로젝트 만들기
rails new tailwind_css_rails_demo -d postgresql
cd tailwind_css_rails_demo
rails db:create
그러면 새 Ruby on Rails 프로젝트가 생성되고 PostgreSQL이 구성됩니다.SQLite 또는 MySQL을 사용하려면 -d postgresql
플래그를 생략할 수 있습니다.Rails 및 웹 패키지 실행
나는 한 명령줄 옵션 카드에서 Rails 서버를 실행하고 다른 명령줄 옵션 카드에서 웹pack dev 서버를 실행하는 것을 더 좋아한다. 왜냐하면 그것은 훨씬 빠르기 때문이다.개발 과정에서 Rails는 웹 팩 dev 서버가 패키지를 컴파일했는지 판단할 수 있습니다. 컴파일이 없으면 Rails는 내부 연결 방식으로 컴파일합니다.
응용 프로그램을 계속 실행합시다.
# Terminal tab 1
rails s
및 웹 패키지 개발 서버:# Terminal tab 2
./bin/webpack-dev-server
브라우저에서 localhost:3000
로 이동하면 이제 Rails 시작 페이지가 표시됩니다.
새 리소스 생성
나는 개인적으로 데이터베이스에서 여러 개의 강좌 기록을 보고 응용 프로그램을 더욱 진실하게 보이는 것을 좋아한다.피드 데이터를 추가하는 것에 흥미가 없고, 메인 컨트롤러나 비슷한 것을 만들고 싶다면, 이 부분을 건너뛸 수 있습니다.
데이터베이스에서 레코드를 찾으려면 다음과 같은 작은 리소스를 사용하십시오.
rails generate scaffold Post title:string content:text
Rails는 몇 개의 파일을 생성하지만 그 중 몇 개만 살펴봅니다.다음 명령을 사용하여 생성된 마이그레이션을 실행합니다.
rails db:migrate
이제 피드 데이터를 추가합시다.db/seeds.rb
를 열고 다음을 추가합니다.# db/seeds.rb
10.times do |n|
Post.create!(title: "Post title - ##{n}", content: "This is the content for the #{n.ordinalize} post.")
end
본 강좌에 있어서 이 코드들을 완전히 이해하는 것은 중요하지 않지만, 저에게 연락하거나 평론에서 알려주신다면, 저는 그것에 대해 더욱 상세한 설명을 하고 싶습니다.TL;DR은 현재 데이터베이스에 10개의 고유한 포스트 레코드를 보유하고 있습니다.재미있는 부분에 들어가기 전에 우리가 해야 할 마지막 일은
config/routes.rb
파일을 업데이트하여 응용 프로그램의 루트 경로를 댓글의 색인 페이지로 만드는 것이다.# config/routes.rb
Rails.application.routes.draw do
resources :posts
root to: "posts#index"
end
Rails 서버를 다시 시작하여 localhost:3000
로 이동하면 다른 CRUD 작업에 대한 링크가 있는 임의의 데이터가 포함된 테이블을 볼 수 있습니다.TailwindCSS 설치
지금 재미있는 일을 보러 오세요.
터미널에서 다음 명령을 실행하여 TailwindCSS 설치
yarn add tailwindcss
후미풍 구성 파일도 추가해야 합니다../node_modules/.bin/tailwind init
프로젝트의 루트 디렉터리에 tailwind.config.js
파일을 만들어야 합니다.이 파일은 TailwindCSS 기본값 사용자 정의, 플러그인 추가 등에 사용할 수 있습니다.Tailwind's docs 에서 자세한 내용을 확인할 수 있습니다.Rails 6의 기본 구성이며 두 가지 새로운 요구 사항이 있습니다.
require('tailwindcss'),
require('autoprefixer'),
이러한 요구 사항의 가장 좋은 순서는 다음과 같습니다. 그러나 PostSS 구성의 맨 위에 추가하면 대부분의 사용자에게 적용될 수 있다고 생각합니다.// postcss.config.js
module.exports = {
plugins: [
require('autoprefixer'),
require('postcss-import'),
require('tailwindcss'),
require('postcss-flexbugs-fixes'),
require('postcss-preset-env')({
autoprefixer: {
flexbox: 'no-2009'
},
stage: 3
})
]
}
순풍을 배치하다
이 점을 할 수 있는 몇 가지 방법이 있지만, 이것은 나 개인의 선호이다.
assets 폴더를 삭제하면 Webpacker에 전적으로 의존하기 때문에 필요하지 않습니다.
rm -rf app/assets
새 스타일시트 파일을 만들려면 다음과 같이 하십시오.touch app/javascript/src/application.scss
postcss-import
및 웹 패키지를 사용하고 있으므로 Tailwind docs 스타일시트 파일에 다음 내용을 추가하라는 메시지가 표시됩니다.// app/javascript/src/application.scss
@import "tailwindcss/base";
@import "tailwindcss/components";
@import "tailwindcss/utilities";
또한 app/javascript/packs/application.js
에 다음 행을 추가해야 합니다.import '../src/application.scss'
마지막 단계는 Rails에 우리의 패키지 파일을 사용하도록 알려주는 것입니다.app/views/layouts/application.html.erb
에서 변경:<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
받는 사람:<%= stylesheet_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
Rails 서버와 webpack dev 서버를 재부팅하면 localhost:3000
에서 다음을 볼 수 있습니다.
순풍이 이제 작용을 해야 하기 때문에 우리의 관점을 조정하고 순풍이 가져온 이익을 봅시다.
TailwindCSS를 사용하여 뷰 업데이트
app/views/layouts/application.html.erb
변경 내용:<body>
<%= yield %>
</body>
받는 사람:<body class="min-h-screen bg-gray-100">
<div class="container mx-auto">
<%= yield %>
</div>
</body>
app/views/posts/index.html.erb
에서 프레임 페이지를 다음과 같이 대체합니다.<p id="notice"><%= notice %></p>
<h1 class="font-semibold text-4xl text-gray-700 my-8">Posts</h1>
<div class="w-full xl:w-8/12 mb-12 xl:mb-0 px-4">
<div class="relative flex flex-col min-w-0 break-words bg-white w-full mb-6 shadow-lg rounded">
<table class="items-center w-full bg-transparent border-collapse">
<thead>
<tr>
<th class="px-6 bg-gray-100 text-gray-600 align-middle border border-solid border-gray-200 py-3 text-xs uppercase border-l-0 border-r-0 whitespace-no-wrap font-semibold text-left">Title</th>
<th class="px-6 bg-gray-100 text-gray-600 align-middle border border-solid border-gray-200 py-3 text-xs uppercase border-l-0 border-r-0 whitespace-no-wrap font-semibold text-left">Content</th>
<th class="px-6 bg-gray-100 text-gray-600 align-middle border border-solid border-gray-200 py-3 text-xs uppercase border-l-0 border-r-0 whitespace-no-wrap font-semibold text-left", colspan="3"></th>
</tr>
</thead>
<tbody>
<%% @posts.each do |post| %>
<tr>
<td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left"><%= post.title %></td>
<td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left"><%= post.content %></td>
<td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left"><%= link_to 'Show', post %></td>
<td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left"><%= link_to 'Edit', edit_post_path(post) %></td>
<td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left"><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<%= link_to 'New Post', new_post_path %>
현재 localhost:3000
로 이동하면 다음 페이지가 보일 것입니다
추상적이다
이 시계는 보기에는 많이 좋아졌지만, 이 원소들의 종류는 매우 길고, 게다가 중복된다.그것들을 우리의 scss 파일로 추상화해서 정리합시다.
app/javascript/src/application.scss
에서 두 개의 새 클래스를 만듭니다..table-header {
@apply px-6 bg-gray-100 text-gray-900 align-middle border border-solid border-gray-200 py-3 text-xs uppercase border-l-0 border-r-0 whitespace-no-wrap font-semibold text-left;
}
.table-content {
@apply border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left;
}
그리고 HTML에서 모든 헤더와 폼 요소 클래스를 변경합니다.또한 제목 텍스트를 어둡게 하여 변경 내용을 강조합니다.페이지를 다시 불러올 때, 이전과 같은 화면을 볼 수 있을 것입니다. 어두운 표 제목만 있을 것입니다.
총결산
TailwindCSS를 Rails 응용 프로그램에 추가하려는 사람들에게 도움이 되었으면 합니다.
Rails와 Tailwind CSS를 사용한 이 글에 관심이 있다면 댓글을 남기거나 트위터에 연락해 주세요. 저는 기꺼이 당신과 이야기를 나눌 것입니다.
View repo for this post
즐거운 인코딩!😄
Reference
이 문제에 관하여(Ruby on Rails 6 및 TailwindCSS 1.1.4 설정 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/andrewmcodes/ruby-on-rails-and-tailwindcss-1-1-4-mm5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)