26
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Next.js+TypeScript】Tailwind CSSの環境構築Q&A

Last updated at Posted at 2021-08-11

筆者がfwywd一次採用試験を受けたときに、
割とちょこちょこハマる部分が多かったのでQ&Aとしてまとめておく。

採用試験を受ける人に限らず、
全てのNext.js+TypeScript+Tailwind CSSの環境構築で苦しんでいる人の助けになれれば嬉しい。

こんな人を対象にしているよ

  • Next.js + TypeScript + Tailwind CSSの環境構築で詰まっている人
  • Visual Studio Codeを使っている人

バージョン情報

node:15.11.0
react: 17.0.2
react-dom: 17.0.2
next: 11.0.1
autoprefixer: 10.2.6
postcss: 8.3.5
tailwindcss: 2.2.4
Windows 10
Visual Studio Code 1.58.2

ファイル構造

ファイル構造全体.jpg

Q&A

種類別に紹介。

インストール編

Q1.Tailwind CSSをNext.js + TypeScript下でどうインストールしたらいいかわからない

A.この記事の説明通りにやってみよう。

Q2.npm経由でインストールしようとしたけどエラーが出る

A.Node.jsがインストールされているか確認してみる。
していない人はここからDL可。

インストールしたか不明な人は、
Visual Studio Codeでターミナルを開き以下のコマンドで確認できる。

ターミナル
node -v
npm -v

Q3.yarn経由でインストールしようとしたけどエラーが出る

セキュリティ エラー: [Import-Module]、PSSecurityExceptionとか言われる。

A.Windows10のスクリプト実行設定「ExecutionPolicy」の設定を確認してみよう。
デフォルト値がRestricted(全てのスクリプトファイルの実行を禁止する)なため、
RemoteSigned(スクリプトファイルの実行を許可する)へ変更する必要がある。

Windows Powershell を**管理者として実行(ココ大事。しないとエラー吐く)**し、以下のコマンドを実行する。

powershell
Get-ExecutionPolicy /*現在の値確認。Restrictedになってたらこれが原因*/
Set-ExecutionPolicy RemoteSigned /*RemoteSignedへ変更*/

実行した後は、
念の為Visual Studio Codeを再起動してから確認してみてね。

tailwind.config.js編

Q4.tailwind.config.jsなんてファイル見当たらないよ?

A.Tailwind CSS をインストールしただけではtailwind.config.jsが作成されない。
以下のコマンドのどちらかをターミナルで実行するべし。

ターミナル
/*npm*/
npx tailwindcss init -p

/*yarn*/
yarn tailwindcss init -p

Q5.Tailwind CSSが反映されない

インストールして使ってみたのに反映されていない。

A.tailwind.config.jsにある項目「purge」の指定先が正しいか確認してみる。
相対パス表記が合っているか確認しよう。
特にディレクトリ構造を整理した人に起きがち。私のことです。

例えば「test」ってプロジェクトがあるとする。
ファイル構造.jpg

上記のファイル構成で「pages」「components」フォルダにTailwind CSSを効かせたいとしたら、
tailwind.config.jsのpurge指定は以下の通り。

tailwind.config.js
module.exports = {
  purge: ['./src/pages/**/*.{js,ts,jsx,tsx}', './src/components/**/*.{js,ts,jsx,tsx}'],
  theme: {
    extend: {}, 
  }
};

Q6.追加した色が反映されない

A.tailwind.config.jsファイル内で正しく記述されているか確認してみる。

tailwind.config.js
module.exports = {
  purge: ['./src/pages/**/*.{js,ts,jsx,tsx}', './src/components/**/*.{js,ts,jsx,tsx}'],
  theme: {
    extend: {
      colors: {
        'primary': '#384359',
        'secondary': '#008c8d',
      }
    }
  }
};

よくやりがちなのが「extend:{}」の外に書いてたり表記を忘れてたりするパターン。
筆者は初使用でもない癖にextend:{}を書き忘れて10分ぐらいハマった。

Q7.背景画像を指定しているのに404になる(表示されない)

A.urlパスが間違っている。

Next.jsではpublicフォルダに画像を収納しておく。
パス指定時に’/’を入れるだけでアクセスできる。超便利。

例えば以下のファイル構造で「top.png」を背景画像にしたかったら、
ファイル構造 (2).jpg
“url()”の部分の記述はこれだけでOK。

tailwind.config.js
module.exports = {
  purge: ['./src/pages/**/*.{js,ts,jsx,tsx}', './src/components/**/*.{js,ts,jsx,tsx}'],
  theme: {
    extend: {
      colors: {
        'primary': '#384359',
        'secondary': '#008c8d',
      },
      backgroundImage: (theme) => ({
        'bg-top': "url('/top.png')",
      }),
    }
  }
};

これもextend:{}内に書く必要があるため注意。

番外編:eslint-plugin-tailwindcss

Q8.eslint-plugin-tailwindcssをインストールしたけどtailwind.config.jsファイルで追加したカスタマイズクラスをeslintが認識してくれない

「そんなクラスありませんよ!(no-custom-classname)」って警告してくる。
でもプロジェクトにはちゃんと反映されているパターン。
放置すると不必要な警告だらけになって非常に鬱陶しい。

A.eslintrcファイルの設定でconfigの指定先が正しいか確認する。
デフォルト値は

"config": "tailwind.config.js"。

筆者の環境では、
ファイル構造 (3).jpg
上記のファイル構造で下記のとおりに修正したら直った。

.eslintrc
{
  "settings": {
    "tailwindcss": {
      "config": "./tailwind.config.js"
    }
}

同階層にあるからデフォルト値でも動く気がするんだけどなあ。なぜ動かなかったのか不明。

.eslinttcファイル全体の設定はこちら。prettierも併用している。
.eslintrc
{
  "extends": ["next", "next/core-web-vitals", "plugin:tailwindcss/recommended", "prettier"],
  "ignorePatterns": ["*.config.js"],
  "rules": {
    "import/order": [
      "error",
      {
        "alphabetize": {
          "order": "asc"
        }
      }
    ]
  },
  "plugins": ["tailwindcss"],
  "settings": {
    "tailwindcss": {
      "config": "./tailwind.config.js",
      "groupByResponsive": true
    },
    "import/resolver": {
      "typescript": { "project": "./" }
    }
  }
}

皆の「詰まったポイント」募集中

「ここで躓いた」「今も悩んでる」ってところ、あればぜひ教えてね。載せます。

他の記事もぜひ読んでみてね。
【Next.js+TypeScript】fwywdの一次採用試験攻略ガイド~試験の流れ編【採用試験対策】
【Git Flow】チーム開発のお作法~GitHubとブランチ管理編【採用試験対策】
【Next.js + TailwindCSS】TypeScriptを使ってコンポーネントを作ってみよう【fwywd一次採用試験】

26
12
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
26
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?