<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ESBuild</title>
	<atom:link href="https://techgrowup.net/tag/esbuild/feed/" rel="self" type="application/rss+xml" />
	<link>https://techgrowup.net</link>
	<description>エンジニアを強くする</description>
	<lastBuildDate>Sun, 27 Apr 2025 17:00:00 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://techgrowup.net/wp-content/uploads/2021/05/hp-icon-150x150.png</url>
	<title>ESBuild</title>
	<link>https://techgrowup.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Vite超入門──“爆速”開発を実現する次世代フロントエンドツールチェーン徹底ガイド</title>
		<link>https://techgrowup.net/react-vite/</link>
					<comments>https://techgrowup.net/react-vite/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[techgrowup]]></dc:creator>
		<pubDate>Sun, 27 Apr 2025 17:00:00 +0000</pubDate>
				<category><![CDATA[React]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[ESBuild]]></category>
		<category><![CDATA[HMR]]></category>
		<category><![CDATA[Rollup]]></category>
		<category><![CDATA[Vite]]></category>
		<category><![CDATA[Vitest]]></category>
		<category><![CDATA[Vue]]></category>
		<category><![CDATA[ビルドツール]]></category>
		<category><![CDATA[フロントエンド]]></category>
		<guid isPermaLink="false">https://techgrowup.net/?p=2814</guid>

					<description><![CDATA[Viteとは何者か Vite（ヴィート）は、Vue の作者 Evan You が開発したフロントエンド開発ツールです。「速さ（vite=仏語の“高速”）」の名のとおり、従来のバンドラに比べ初回起動やコード更新が桁違いに速 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Viteとは何者か</h2>



<p class="wp-block-paragraph">Vite（ヴィート）は、Vue の作者 Evan You が開発したフロントエンド開発ツールです。「速さ（vite=仏語の“高速”）」の名のとおり、従来のバンドラに比べ初回起動やコード更新が桁違いに速いのが特徴です。その秘密は ES モジュールを生かした<strong>オンデマンド変換</strong>と、本番ビルド時に <strong>Rollup</strong> を用いる二段構えのアーキテクチャにあります。</p>



<h2 class="wp-block-heading">旧世代ツールと何が違う？</h2>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th>項目</th><th>Webpack</th><th>Vite</th></tr></thead><tbody><tr><td>開発サーバ起動</td><td>数十秒〜数分</td><td>1〜2 秒</td></tr><tr><td>HMR更新</td><td>0.5 秒以上</td><td>30〜50 ms</td></tr><tr><td>設定ファイル</td><td>必須</td><td>ゼロコンフィグでOK</td></tr><tr><td>バックエンド</td><td>Node.js + Webpack</td><td>Node.js + esbuild + Rollup</td></tr></tbody></table></div></figure>



<p class="wp-block-paragraph">Vite は依存ライブラリを esbuild でプリバンドルし、ソースコードはリクエストされた瞬間だけトランスパイルするため、「保存→ブラウザ反映」の待ち時間がほぼ消えます。</p>



<h2 class="wp-block-heading">インストールとプロジェクト初期化</h2>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="npm create vite@latest my-vite-app
cd my-vite-app
npm install
npm run dev   # http://localhost:5173" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">create</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">vite@latest</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">my-vite-app</span></span>
<span class="line"><span style="color: #DCDCAA">cd</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">my-vite-app</span></span>
<span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">install</span></span>
<span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">run</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">dev</span><span style="color: #D4D4D4">   </span><span style="color: #6A9955"># http://localhost:5173</span></span></code></pre></div>



<p class="wp-block-paragraph">対話プロンプトで <strong>Vue、React、Svelte、Solid、Lit</strong> など好きなテンプレートを選べます。後からライブラリを追加しても問題ありません。</p>



<h2 class="wp-block-heading">ディレクトリ構成の基本</h2>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="my-vite-app/
├─ index.html       ← エントリーポイント
├─ vite.config.js   ← 必要になったら作成
├─ src/
│  ├─ main.js
│  └─ App.vue / App.jsx
└─ public/" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">my-vite-app/</span></span>
<span class="line"><span style="color: #DCDCAA">├─</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">index.html</span><span style="color: #D4D4D4">       </span><span style="color: #CE9178">←</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">エントリーポイント</span></span>
<span class="line"><span style="color: #DCDCAA">├─</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">vite.config.js</span><span style="color: #D4D4D4">   </span><span style="color: #CE9178">←</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">必要になったら作成</span></span>
<span class="line"><span style="color: #DCDCAA">├─</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">src/</span></span>
<span class="line"><span style="color: #DCDCAA">│</span><span style="color: #D4D4D4">  </span><span style="color: #CE9178">├─</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">main.js</span></span>
<span class="line"><span style="color: #DCDCAA">│</span><span style="color: #D4D4D4">  </span><span style="color: #CE9178">└─</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">App.vue</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">/</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">App.jsx</span></span>
<span class="line"><span style="color: #DCDCAA">└─</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">public/</span></span></code></pre></div>



<p class="wp-block-paragraph"><code>index.html</code> を Vite が解析し、自動でモジュールグラフを生成します。</p>



<h2 class="wp-block-heading">開発サーバとホットリロード</h2>



<p class="wp-block-paragraph"><code>npm run dev</code> を実行すると開発サーバが起動し、以下を行います。</p>



<ol class="wp-block-list">
<li>依存ライブラリを esbuild でプリバンドル</li>



<li>ソースをオンデマンド変換してブラウザへ配信</li>



<li>変更検知で該当モジュールだけを HMR で差し替え</li>
</ol>



<p class="wp-block-paragraph">Vue SFC、React Fast Refresh、Svelte HMR などが公式プラグインでサポートされ、状態を保持したまま UI が瞬時に更新されます。</p>



<h2 class="wp-block-heading">本番ビルドと最適化</h2>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="npm run build
npm run preview" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">run</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">build</span></span>
<span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">run</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">preview</span></span></code></pre></div>



<p class="wp-block-paragraph">Rollup がコード分割・ツリーシェイキングを行い、<code>dist/</code> にハッシュ付きファイルを出力します。画像は 4 KB 未満なら自動で Base64 インライン化されます。</p>



<h2 class="wp-block-heading">プラグインエコシステム</h2>



<ul class="wp-block-list">
<li><strong>@vitejs/plugin-react</strong> – React + Fast Refresh</li>



<li><strong>@vitejs/plugin-vue</strong> – Vue 3 SFC 対応</li>



<li><strong>vite-plugin-pwa</strong> – 数行で PWA 化</li>



<li><strong>vite-plugin-legacy</strong> – 古いブラウザ向けフォールバック</li>
</ul>



<p class="wp-block-paragraph">プラグインは <code>vite.config.js</code> の <code>plugins</code> 配列に追加するだけで機能します。</p>



<h2 class="wp-block-heading">環境変数とモード</h2>



<p class="wp-block-paragraph"><code>.env</code> ファイルに <strong>VITE_</strong> プレフィックスを付けて記述し、<code>import.meta.env.VITE_API_BASE</code> のように参照します。モードは <code>development</code> / <code>production</code> などが自動判定され、<code>import.meta.env.MODE</code> で取得できます。</p>



<h2 class="wp-block-heading">主要フレームワークとの統合</h2>



<h3 class="wp-block-heading">React</h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="npm i -D @vitejs/plugin-react" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">i</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-D</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">@vitejs/plugin-react</span></span></code></pre></div>



<p class="wp-block-paragraph">JSX 変換と Fast Refresh が自動有効。TypeScript も即利用可能。</p>



<h3 class="wp-block-heading">Vue 3</h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="npm i -D @vitejs/plugin-vue" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">i</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-D</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">@vitejs/plugin-vue</span></span></code></pre></div>



<p class="wp-block-paragraph"><code>.vue</code> ファイルと <code>&lt;script setup&gt;</code> をネイティブサポート。</p>



<h3 class="wp-block-heading">Svelte</h3>



<p class="wp-block-paragraph">テンプレート <code>svelte</code> を選ぶだけで HMR と SvelteKit 互換設定が完了します。</p>



<h2 class="wp-block-heading">移行ガイド：CRA/Webpack → Vite</h2>



<ol class="wp-block-list">
<li><code>react-scripts</code> をアンインストール</li>



<li><code>npm create vite</code> でテンプレートを生成</li>



<li><code>REACT_APP_</code> 環境変数を <code>VITE_</code> にリネーム</li>



<li>絶対パスエイリアスを <code>vite.config.js</code> に <code>resolve.alias</code> として移植</li>
</ol>



<p class="wp-block-paragraph">多くのプロジェクトは半日程度で移行でき、ビルド時間が 1/5 以下に短縮されます。</p>



<h2 class="wp-block-heading">なぜ“爆速”なのかをもう少し深掘り</h2>



<p class="wp-block-paragraph">Vite は開発中に esbuild を使用し、依存ライブラリを一度だけプリバンドル。ソースコードはリクエスト単位でトランスパイルされ、HMR では変更箇所のみを WebSocket 越しに差し替えます。これにより編集サイクルが極端に短縮されるのです。本番ビルドでは Rollup の最適化アルゴリズムを活用し、速度と品質を両立しています。</p>



<h2 class="wp-block-heading">Vitestで体験する“超高速ユニットテスト”</h2>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="npm i -D vitest @testing-library/react" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">i</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-D</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">vitest</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">@testing-library/react</span></span></code></pre></div>



<p class="wp-block-paragraph">Vite とキャッシュを共有するため、1000 件以上のテストでも数秒で完了します。Jest 互換 API なので即移行可能です。</p>



<h2 class="wp-block-heading">SSR・プリレンダリング活用例</h2>



<p class="wp-block-paragraph"><code>vite build --ssr</code> でサーバーレンダリング用バンドルを生成し、Node.js ハンドラに流し込めます。また <code>--ssrManifest</code> で依存表を出力すればプリレンダリングとの相性も抜群です。Nuxt 3、Astro、SvelteKit などが Vite を基盤に採用しています。</p>



<h2 class="wp-block-heading">よくあるエラーと対処法</h2>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th>エラー</th><th>原因</th><th>解決策</th></tr></thead><tbody><tr><td><code>Failed to resolve import "fs"</code></td><td>ブラウザで Node 専用モジュール参照</td><td>条件付き import または external 設定</td></tr><tr><td>画像が 404</td><td><code>public/</code> ではなく <code>src/</code> に置いた</td><td><code>import</code> で読み込むか <code>public</code> へ移動</td></tr><tr><td>HMR が動かない</td><td>IDE の Safe Write 機能</td><td>Safe Write をオフにする</td></tr></tbody></table></div></figure>



<h2 class="wp-block-heading">デプロイ先別クイックスタート</h2>



<h3 class="wp-block-heading">Netlify</h3>



<p class="wp-block-paragraph">ビルドコマンド <code>npm run build</code>、公開フォルダ <code>dist</code> を設定するだけ。</p>



<h3 class="wp-block-heading">Vercel</h3>



<p class="wp-block-paragraph"><code>vercel</code> CLI を実行すると自動で Vite プリセットが適用。</p>



<h3 class="wp-block-heading">Cloudflare Pages</h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="npm run build
npx wrangler pages publish dist" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">run</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">build</span></span>
<span class="line"><span style="color: #DCDCAA">npx</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">wrangler</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">pages</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">publish</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">dist</span></span></code></pre></div>



<h2 class="wp-block-heading">ロードマップとコミュニティ</h2>



<p class="wp-block-paragraph">Vite 5 では esbuild v0.23 へのアップグレード、Import Attributes 標準化、Rust ベースの変換パイプラインとのハイブリッド化が予定されています。GitHub での PR マージ速度も非常に高速で、活発なコミュニティが魅力です。</p>



<h2 class="wp-block-heading">Viteが向かないケースは？</h2>



<ul class="wp-block-list">
<li>IE11 未満を公式サポートする案件</li>



<li>Webpack 固有のローダーに深く依存する巨大モノリス</li>



<li>サーバーサイドとビルドが密結合したレガシー CMS<br>ただし <code>vite-plugin-legacy</code> や移行ツールの充実で、こうした制約は急速に減りつつあります。</li>
</ul>



<h2 class="wp-block-heading">参考コマンド早見表</h2>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="npm create vite@latest        # 新規作成
npm run dev                   # 開発
npm run build                 # 本番ビルド
npm run preview               # プレビュー
npx vite build --ssr src/entry-server.js   # SSRバンドル" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">create</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">vite@latest</span><span style="color: #D4D4D4">        </span><span style="color: #6A9955"># 新規作成</span></span>
<span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">run</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">dev</span><span style="color: #D4D4D4">                   </span><span style="color: #6A9955"># 開発</span></span>
<span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">run</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">build</span><span style="color: #D4D4D4">                 </span><span style="color: #6A9955"># 本番ビルド</span></span>
<span class="line"><span style="color: #DCDCAA">npm</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">run</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">preview</span><span style="color: #D4D4D4">               </span><span style="color: #6A9955"># プレビュー</span></span>
<span class="line"><span style="color: #DCDCAA">npx</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">vite</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">build</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--ssr</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">src/entry-server.js</span><span style="color: #D4D4D4">   </span><span style="color: #6A9955"># SSRバンドル</span></span></code></pre></div>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">Vite は<strong>開発サーバ起動の速さ</strong>と<strong>シンプルな構成</strong>でモダンフロントエンド開発を変革しました。新規プロジェクトはもちろん、既存アプリの移行でも劇的な速度向上が期待できます。まずはコマンド一発でプロジェクトを作成し、その“爆速”体験を味わってください。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://techgrowup.net/react-vite/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: techgrowup.net @ 2026-05-25 07:51:29 by W3 Total Cache
-->