# 帳票設計書 27-Stats none プリセット

## 概要

本ドキュメントは、webpackのビルド統計情報を一切出力しない「none」プリセットの設計仕様を定義する。DefaultStatsPresetPlugin.jsにおけるNAMED_PRESETS.noneの定義に基づく。

### 本帳票の処理概要

noneプリセットは、ビルド統計情報の出力を完全に抑制するプリセットである。`all: false`のみが設定されており、全ての出力項目が無効化される。出力は空文字列（toString）または空オブジェクト（toJson）となる。

**業務上の目的・背景**：ビルド統計情報が不要な場合にログ出力を完全に抑制するために使用される。ビルドパフォーマンスを最大化したい場合や、独自の出力処理を実装する場合、またはビルドの成功/失敗のみをプロセスの終了コードで判定する場合に適している。統計情報の収集・整形処理のオーバーヘッドを排除できる。

**帳票の利用シーン**：本番ビルドでのログ出力完全抑制、カスタムレポーターを使用する場合のデフォルト出力無効化、ビルドパフォーマンスの最大化、テスト環境でのノイズ低減。

**主要な出力内容**：
1. なし（全項目が無効化されているため出力なし）

**帳票の出力タイミング**：webpack設定の`stats`オプションに`"none"`または`false`を指定した場合に適用される。

**帳票の利用者**：DevOpsエンジニア、ビルドシステム管理者

## 帳票種別

統計レポート（プリセット設定 - 出力抑制用）

## 利用画面

| 画面No | 画面名 | URL/ルーティング | 出力操作 |
|--------|--------|-----------------|---------|
| - | CLI | webpack --stats none | コマンドライン引数指定 |
| - | webpack設定ファイル | webpack.config.js | stats: "none" または stats: false 設定 |
| - | Node.js API | - | Stats.toString("none") / Stats.toJson("none") |

## 出力形式

### 基本仕様

| 項目 | 内容 |
|-----|------|
| ファイル形式 | テキスト（空文字列）/ JSON（空オブジェクト） |
| 用紙サイズ | 該当なし |
| 向き | 該当なし |
| ファイル名 | 該当なし（出力なし） |
| 出力方法 | 出力なし |
| 文字コード | 該当なし |

## 帳票レイアウト

### レイアウト概要

noneプリセットは出力を生成しない。

```
（出力なし）
```

### ヘッダー部

該当なし

### 明細部

該当なし

### フッター部

該当なし

## 出力条件

### 抽出条件

| 条件名 | 説明 | 必須 |
|-------|------|-----|
| statsオプション指定 | stats: "none" または stats: false の指定 | Yes |

### ソート順

該当なし

### 改ページ条件

該当なし

## データベース参照仕様

### 参照テーブル一覧

データ参照なし。

## 計算仕様

### 計算項目一覧

計算項目なし。

## 処理フロー

### 出力フロー

```mermaid
flowchart TD
    A[Stats.toString/toJson呼出] --> B[createStatsOptions]
    B --> C{statsPresetフック}
    C -->|none| D[NAMED_PRESETS.none適用]
    D --> E[all:false で全項目無効化]
    E --> F[StatsFactory.create]
    F --> G[空のデータ抽出]
    G --> H[空出力]
```

## エラー処理

### エラーケース一覧

| エラー種別 | 発生条件 | 表示メッセージ | 対処方法 |
|----------|---------|--------------|---------|
| - | - | - | noneプリセット自体にエラーケースは想定されない |

## パフォーマンス要件

| 項目 | 内容 |
|-----|------|
| 想定データ件数 | 0（データ抽出なし） |
| 目標出力時間 | 最速（処理なし） |
| 同時出力数上限 | 1（ビルドごとに1回） |

## セキュリティ考慮事項

出力が一切ないため、情報漏洩リスクは皆無である。

## 備考

- 全プリセットの中で最もシンプルな設定（`all: false`の1項目のみ）
- `stats: false`はwebpackの設定で`"none"`プリセットと同等に扱われる
- summaryプリセットとの違い：summaryはバージョン・エラー数・警告数を出力するが、noneは一切出力しない
- noneプリセットを使用しても、ビルドプロセス自体は正常に実行される（出力のみが抑制される）
- webpack-dev-serverでstats: "none"を設定すると、コンソールへのビルド統計出力が完全に抑制される

---

## コードリーディングガイド

本帳票を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: データ構造を理解する

noneプリセットの極めてシンプルな設定を確認する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | 行141-143: NAMED_PRESETS.noneの定義（1項目のみ：`all: false`） |

**読解のコツ**: noneプリセットは`{ all: false }`のみで構成される最小のプリセット。`all: false`がDEFAULTSの各関数にどう影響するかを理解することが重要。

#### Step 2: all: falseの全面的な効果を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | 行150: NORMAL_ON関数 - `all !== false` -> false |
| 2-2 | DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | 行155: NORMAL_OFF関数 - `all === true` -> false |
| 2-3 | DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | 行161-162: ON_FOR_TO_STRING関数 - `all !== false` -> false |
| 2-4 | DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | 行168-169: OFF_FOR_TO_STRING関数 - `all === true` -> false |
| 2-5 | DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | 行175-180: AUTO_FOR_TO_STRING関数 - `all === false` -> false |

**主要処理フロー**:
- `all: false`により、NORMAL_ON, NORMAL_OFF, ON_FOR_TO_STRING, OFF_FOR_TO_STRING, AUTO_FOR_TO_STRING の全関数がfalseを返す
- 結果として全ての出力項目が無効化される

#### Step 3: エントリーポイントを理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | Stats.js | `lib/Stats.js` | 行73-86: toString()メソッド - noneプリセットでは空文字列が返される |

### プログラム呼び出し階層図

```
Stats.toString("none") / Stats.toJson("none")
    |
    +-- Compilation.createStatsOptions("none", context)
    |       |
    |       +-- statsPreset.for("none").call(options)
    |       |       |
    |       |       +-- applyDefaults(options, {all: false})
    |       |
    |       +-- statsNormalize.call(options, context)
    |               |
    |               +-- DEFAULTS: all=false により全項目が無効化
    |
    +-- StatsFactory.create("compilation", compilation, context)
    |       |
    |       +-- extract: 全項目が無効のため空オブジェクト
    |
    +-- [toStringの場合] StatsPrinter.print("compilation", {})
            |
            +-- 空文字列を返却
```

### データフロー図

```
[入力]                          [処理]                              [出力]

webpack.config.js          DefaultStatsPresetPlugin            なし
  stats: "none"      --->    all: false                  ---> ""（空文字列）
                               |                               または
                          全項目無効化                           {}（空オブジェクト）
                               |
                          StatsFactory.create()
                               |
                          空データ生成
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | ソース | プリセット定義（行141-143） |
| Stats.js | `lib/Stats.js` | ソース | Stats API のエントリーポイント |
| StatsFactory.js | `lib/stats/StatsFactory.js` | ソース | 統計データの抽出エンジン |
| StatsPrinter.js | `lib/stats/StatsPrinter.js` | ソース | 統計データのテキスト整形エンジン |
