LoginSignup
16
6

More than 3 years have passed since last update.

【初期導入がおすすめ】Tailwind.macro + emotionでデザインシステムベースのCSS-in-JSをしよう

Last updated at Posted at 2020-02-15

はじめに

Tailwind.macro + emotionによって、迅速かつ保守性の高いコードベースが構築できます。

どうやって?

まずはライブラリの紹介をします。

ライブラリの紹介

TailwindCSSbabel-plugin-macrosを通して、使えるようにしたものです。

(Tailwindについては公式が一番ですが、日本語の素晴らしい記事もありますよ。⇒手前味噌)

(※ babel-plugin-macrosは、コンパイル時のコード変換に関するBabel Pluginです。今度別記事にまとめてみようかと思っています ⇒ まとめました

どうやらtwin.macroというものが出ている模様で、きちんとメンテナンスされてそうなのはこちらになりそうです。時間を見つけて、更新しようと思います。

CSS-in-JSのライブラリで、styled-componentなどに影響を受けています。

詳しくは、こちらの記事がおすすめです。

これらを組み合わせると、

import styled from "@emotion/styled"
import tw from "tailwind.macro"

const Button = styled.button`
  ${tw`bg-blue-500 px-5`}
`

twbabel-plugin-macrosによってコンパイルされます。

ではインストールしていきましょう。

前提

babel-plugin-macrosを利用する上で必要になります。

  1. babel-plugin-macroのインストール
npm install --save-dev babel-plugin-macros
  1. .babelrc の設定
{
  "plugins": ["macros"]
}

これら導入についての詳細は、こちらにあります。

さらに、GatsbyJSCreate React App を使っている場合は、必要ありません

インストール

まず、NPMパッケージのインストールです。

npm install --save tailwindcss tailwind.macro@next @emotion/core @emotion/styled

※ 2020/02/15日時点で、最新のTailwindCSStailwind.macroを組み合わせるには、tailwind.macro@nextが必要です。

TailwindCSSを初期化します。

npx tailwindcss init

これで、tailwindcss.config.jsというファイルがルートフォルダにできます。

あとは使うだけです!

※ このマクロだけだとTailwindCSSのcss resetなどのベーススタイルは効かないので、必要に応じて

@tailwind base;
@tailwind components;

を作って、読み込んでおきましょう。

ちなみに.containerクラスを使わないなら、@tailwind componentsも不要になります。

嬉しさ

これらのライブラリを初期に導入しておくことの嬉しさは、

この2つの性質を兼ね備えていることです。

  • 素早さ

導入・実装が恐ろしく速いです。

初期開発では、スピードが命でしょうから、素早いに越したことはないです。

  • 拡張性
  1. TailwindCSS のデザインシステムは拡張可能で、

  2. emotion は、コンポーネント内で再利用しやすい最小単位として存在し続けることができます。

これら2つはアジリティが求められる現代の開発に、最適であることは言うまでもないでしょう。

  • 初期の開発は、早ければいいってものではない

後のコストも含めた ROI まで考えて作る

そんな開発者としての「エチケット」を、強力にサポートしてくれるライブラリの紹介でした。

16
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
6