0Pricing
Tailwind CSS Academy · レッスン

ファイルとフォルダーの構成

プロジェクトが単一ファイルを超えて成長しても見通しを保てるよう、CSS のエントリポイント、コンポーネントのスタイルシート、設定ファイルを整理します。

「ファイルとフォルダーの構成」はCoddyKit上の無料Tailwind CSS Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTailwind CSS Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Tailwind CSS Academyコースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

Why File Organization Matters

As Tailwind projects grow, the number of files involving CSS-related configuration — the Tailwind config, PostCSS config, global stylesheets, and component-level CSS — multiplies. Without a clear structure, these files scatter across the project and become hard to find. Good file organization makes it immediately obvious where to add new values, where global overrides live, and which CSS belongs to which component.

Root-Level Config Files

Config files that affect the entire build — tailwind.config.js, postcss.config.js, and .prettierrc — live at the project root alongside package.json. They are root-level because build tools discover them by convention. Never nest them inside src/ unless your toolchain explicitly supports non-root config discovery.

my-project/
├── tailwind.config.js      # ← root level
├── postcss.config.js       # ← root level
├── .prettierrc             # ← root level
├── package.json
├── src/
│   ├── styles/
│   │   └── globals.css     # @tailwind directives
│   └── components/

The Styles Directory

Place all CSS files inside a dedicated src/styles/ directory. The main entry point is globals.css, which contains the three @tailwind directives, @layer overrides for base elements, and imports for any additional stylesheets. Component-specific CSS goes in separate files like button.css or prose-overrides.css, imported into globals.css.

src/styles/
├── globals.css           # main entry: @tailwind base/components/utilities
├── base.css              # @layer base: html, body, heading resets
├── components.css        # @layer components: .btn, .card, .badge
├── utilities.css         # @layer utilities: custom utility helpers
└── prose-overrides.css   # @tailwindcss/typography customizations

Anatomy of globals.css

The globals.css file is the entry point imported into your application's root. It declares the three Tailwind directives in order, then imports any additional stylesheets. Avoid putting custom styles directly in this file beyond the directives — keep custom layer declarations in their own files that are imported here for clarity.

/* src/styles/globals.css */
@tailwind base;
@tailwind components;
@tailwind utilities;

/* Import custom layer files */
@import './base.css';
@import './components.css';
@import './utilities.css';

Co-Locating Component CSS

For component-based frameworks like React or Vue, you can co-locate a small CSS file alongside the component file when the styles are tightly coupled. However, in Tailwind projects this is rare since most styling lives in class names directly in the markup. Reserve co-located CSS only for styles that genuinely cannot be expressed with utilities — such as complex :focus-within selectors or @keyframes.

src/components/
├── Button/
│   ├── Button.tsx
│   └── Button.module.css   # Only if truly needed beyond Tailwind
├── Card/
│   ├── Card.tsx
│   └── Card.test.tsx
└── Modal/
    └── Modal.tsx           # No CSS file — pure Tailwind utilities

Separating Theme Extensions

When the tailwind.config.js grows large, extract the theme.extend object into a separate file like theme/extend.js. This keeps the root config file short and readable, while the theme extension file can grow as long as needed. Import and spread the extension back in the main config.

// theme/extend.js
module.exports = {
  colors: {
    brand: { 50: '#eff6ff', 500: '#3b82f6', 900: '#1e3a8a' },
  },
  fontFamily: {
    display: ['Inter', 'sans-serif'],
  },
  spacing: {
    18: '4.5rem',
    128: '32rem',
  },
};

// tailwind.config.js
const themeExtend = require('./theme/extend');
module.exports = {
  content: [...],
  theme: { extend: themeExtend },
  plugins: [...],
};

Separating Plugin Configuration

If your project uses several Tailwind plugins and each requires significant configuration, extract plugin setups into their own files inside a plugins/ directory. Each file exports a configured plugin and is imported in the main config's plugins array. This makes it easy to see which plugins are active and to adjust their settings independently.

plugins/
├── typography.js     # require('@tailwindcss/typography')({...})
├── forms.js          # require('@tailwindcss/forms')({strategy:'class'})
└── custom-utils.js   # custom plugin function

// tailwind.config.js
module.exports = {
  plugins: [
    require('./plugins/typography'),
    require('./plugins/forms'),
    require('./plugins/custom-utils'),
  ],
};

Organizing Token Files

Design tokens — colors, typography, spacing — are best defined in a separate tokens/ directory rather than inline in the Tailwind config. Each category of tokens lives in its own file: tokens/colors.js, tokens/typography.js, tokens/spacing.js. These files can be shared with design tools, Storybook configurations, and the Tailwind config simultaneously.

tokens/
├── colors.js      # { primary: '#3b82f6', surface: '#ffffff', ... }
├── typography.js  # { fontFamily: { sans: ['Inter', ...] }, ... }
└── spacing.js     # { 18: '4.5rem', 128: '32rem', ... }

// tailwind.config.js
const colors = require('./tokens/colors');
const typography = require('./tokens/typography');
module.exports = {
  theme: {
    extend: { colors, ...typography },
  },
};

Content Glob Patterns

Keep content glob patterns organized and readable. Group them by file type and location rather than writing one catch-all glob that scans too broadly. Comment each glob to explain which part of the project it covers. Maintain this list actively — remove old patterns when directories are renamed or removed, and add new patterns when new file types are introduced.

// tailwind.config.js
content: [
  // Pages and layouts
  './src/pages/**/*.{js,ts,jsx,tsx}',
  './src/layouts/**/*.{js,ts,jsx,tsx}',

  // UI components
  './src/components/**/*.{js,ts,jsx,tsx}',

  // Public HTML files
  './public/**/*.html',

  // Email templates (if any)
  './emails/**/*.{js,ts,jsx,tsx}',
],

Naming Conventions for CSS Layers

When using @layer to add custom styles, follow a consistent naming approach. Use @layer base for element-level resets (e.g., a, h1, input), @layer components for multi-utility patterns with meaningful names (.btn, .card), and @layer utilities for single-purpose utilities not in Tailwind's default set. Never mix these responsibilities.

/* src/styles/base.css */
@layer base {
  html { @apply scroll-smooth; }
  h1 { @apply text-4xl font-extrabold; }
  a { @apply text-blue-600 hover:text-blue-700; }
}

/* src/styles/components.css */
@layer components {
  .btn { @apply rounded-lg px-4 py-2 font-semibold; }
}

/* src/styles/utilities.css */
@layer utilities {
  .text-balance { text-wrap: balance; }
}

README for Style Conventions

Document the file and folder structure in your project's README or a dedicated STYLE_GUIDE.md. Include a diagram of the src/styles/ directory, explain which file each kind of style goes in, and note the content glob maintenance responsibility. New developers should be able to understand where to add a new custom color or a new component class by reading a single page of documentation.

# CSS Architecture

## File Map
- `tailwind.config.js` — theme tokens, content globs, plugins
- `src/styles/globals.css` — entry point, @tailwind directives
- `src/styles/base.css` — element resets in @layer base
- `src/styles/components.css` — .btn, .card, .badge in @layer components
- `tokens/colors.js` — brand color palette

## Adding a new custom utility
Add to `src/styles/utilities.css` inside `@layer utilities { }`. 

Quick Check

Test your understanding of Tailwind CSS Mastery concepts from this lesson.

Lesson Recap

In this lesson you learned: keeping config files at the project root for toolchain compatibility, organizing styles into a src/styles/ directory with separate files per layer, and extracting theme tokens and plugins into dedicated files as the config grows. Next up we explore coexisting with legacy CSS in existing projects.

よくある質問

「ファイルとフォルダーの構成」レッスンは無料ですか?

はい。「ファイルとフォルダーの構成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Tailwind CSS Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Tailwind CSS Academyコースには全4レッスンが含まれています。

「ファイルとフォルダーの構成」で何を学びますか?

プロジェクトが単一ファイルを超えて成長しても見通しを保てるよう、CSS のエントリポイント、コンポーネントのスタイルシート、設定ファイルを整理します。 ブラウザで直接実行するハンズオンコードでTailwind CSS Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Tailwind CSS Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのTailwind CSS Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「ファイルとフォルダーの構成」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このTailwind CSS Academyレッスンでコードを書いて実行できますか?

はい。すべてのTailwind CSS Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ファイルとフォルダーの構成
  2. レガシー CSS との共存
  3. CSS Modules と Tailwind
  4. モノレポ全体への Tailwind の展開
← Tailwind CSS Academyに戻る