About
本サイトについて
趣味で開発したプログラムや開発メモを載せています。
ソースコードはGithubで公開しつつ、なるべく後から分かるように解説に努めてますので、
誰かのお役に立てれば嬉しいです。
プロフィール
kght6123
佐賀県出身で1985年生まれ。
三重県四日市市在住のシステムエンジニア。家庭を大事にしたい2児の父。
趣味で開発したプログラムや開発メモを載せています。
ソースコードはGithubで公開しつつ、なるべく後から分かるように解説に努めてますので、
誰かのお役に立てれば嬉しいです。
佐賀県出身で1985年生まれ。
三重県四日市市在住のシステムエンジニア。家庭を大事にしたい2児の父。
既存の静的サイトなどに、爆速の Tailwind CSS を導入したいと考えている方へ!
Tailwind CSS v2.2.0 で、 Tailwind CLI が新しく導入されました。
その CLI ツールを使って、npm install ができない環境に Tailwind CSS (Just-in-Time Mode モード) を導入して、試しにダークモードの対応を行う方法をご紹介しようと思います。
ユーティリティ・ファーストの低レベルな CSS ライブラリです。
Bootstrap や Vuetify、 ElementUI の様に決まった UI ではなく オリジナルの UI を爆速で作れます。
設定ファイルを変更することで、 Tailwind CSS のほぼ全てをカスタマイズできます。
Tailwind CSS v2.2.0 から新たに追加されたツールです。
Tailwind CLI のビルド機能を利用することで、 プロジェクトに Tailwind CSS をインストールして設定しなくても Tailwind CSS をビルドして利用できる様にするツールです。
そのため npm install や yarn add ができないレガシーな環境でも、ビルドして利用できます。
また、今までの postcss コマンドよりパフォーマンスが最適化された Just-in-Time Mode モードも Tailwind CLI で利用できます。
Tailwind CSS は v2.2.0 以降が必須です。
最初に npx コマンドを利用するために、Node.js をインストールします。
$ brew install node
下記のコマンドを実行して、設定ファイルを作ります。
$ npx tailwindcss init
Need to install the following packages:
tailwindcss
Ok to proceed? (y) y
Created Tailwind CSS config file: tailwind.config.js
コマンド実行後に npm グローバルに、Tailwind CSS がインストールされます。
下記の 3 つの設定を変更しました
purge には、Tailwind CSS を利用する HTML や JS などを、ワイルドカードで指定します。
// tailwind.config.js
module.exports = {
- purge: [],
+ purge: ["./cms/**/*.html", "./files/**/*.html"], // (1.)
- darkMode: false, // or 'media' or 'class'
+ darkMode: 'media', // or 'media' or false // (2.)
+ prefix: "tw-", // (3.)
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
}
Tailwind CSS に追加のクラスなどを追加するための、tailwind.css ファイルを作成します。
/* tailwind.src.css */
/* @tailwind base; 今回は、ノーマライズ CSS が不要なので無効にする */
@tailwind components;
@tailwind utilities;
今回は、Tailwind CLI で生成する前のソースファイルであることがわかりやすいように、src
をファイル名に付与しました。
読み込む CSS ファイルは生成したことがわかりやすいように、dist
をファイル名に付与しました。
通常はこちら
+
<!-- Tailwind CSS -->
+
<link
rel="stylesheet"
type="text/css"
href="/ec/files/exfiles/tailwind.dist.css"
/>
今回、試したシステムが Thymeleaf を使用していたため、一応、載せておきます。
+
<!--/* Tailwind CSS */-->
+
<link
rel="stylesheet"
type="text/css"
th:href="@{/files/exfiles/tailwind.dist.css}"
/>
dark:
の記述を Tailwind CSS の class の先頭に追加すると、OS やブラウザのテーマが「ダークテーマ」の時に有効なスタイルになります。
-
<body>
+
<body class="dark:tw-bg-gray-800 dark:tw-text-gray-50"></body>
</body>
下記のコマンドを実行して、 tailwind.dist.css を生成します。
# 開発用
npx tailwindcss -i ./tailwind.src.css -o ./files/exfiles/tailwind.dist.css --watch --jit
# 本番用
NODE_ENV=production npx tailwindcss -i ./tailwind.src.css -o ./files/exfiles/tailwind.dist.css --jit --minify
開発用も本番用も、--jit
オプションによって Just-in-Time Mode モードが有効になり、使用されている Tailwind CSS のクラスのみ生成されます。
開発用のコマンドは、 tailwind.src.css や purge で指定した HTML を修正すると自動的に tailwind.dist.css が再生成される開発中向けのコマンドです。
本番用のコマンドは、 tailwind.dist.css を一度だけ作成し cssnano によって最小化します。
時間は、HTML のファイル数は 「21,473 個」 ある時、 Mac の負荷が高い時で 「50 秒」、低い時で 「6〜7 秒」 でした。
HTML の CSS 修正のみなら、数十〜数百ミリ秒で完了します。
下記の通り、最小限の CSS になっています 🎊
/* @tailwind base; */
@media (prefers-color-scheme: dark) {
.dark\:tw-bg-gray-800 {
--tw-bg-opacity: 1;
background-color: rgba(31, 41, 55, var(--tw-bg-opacity));
}
.dark\:tw-text-gray-50 {
--tw-text-opacity: 1;
color: rgba(249, 250, 251, var(--tw-text-opacity));
}
}
試しに body の背景色だけなので、完全ではないですが下記のようになりました。
もし、ちゃんと対応する場合は、 他の要素にもdark:
で始まる Tailwind CSS のクラスや、 tailwind.css に記述したカスタムのクラスを指定することになると思います。
Tailwind CLI を利用して、npm install ができない環境に Tailwind CSS (Just-in-Time Mode モード) を導入して、試しにダークモードの対応を行なってみました。
このほかにも Tailwind CSS の膨大なユーティリティをそのまま使えるようになるので、ユーティリティクラスの作成や、管理で悩む必要がかなり少なくなってくるため、導入するメリットがあると思います。
また、HTML のファイル数にしては、爆速でビルドが実行されて快適に開発が可能ですし、生成される CSS も最小限です。
ぜひ、一度、お試しください 🙏
最後まで読んでいただき、ありがとうございました。
https://github.com/tailwindlabs/tailwindcss/releases/tag/v2.2.0
https://github.com/tailwindlabs/tailwindcss/releases/tag/v2.1.0