ちょっぱやだと噂の Vite で React のプロジェクトを作ってみた素振りのメモ
Vite とゎ?
昨今の巨大な JavaScript のプロジェクトはモジュールバンドルのパフォーマンスがボトルネックになってきていた。
従来のものは更新頻度の少ないファイルも全てバンドルして提供していた。
開発サーバーでは10倍から100倍高速であるesbuildを用いて依存関係を事前にバンドルし、 native ESM を利用することで頻繁に更新されるファイルを Dynamic import するようにして高速化させている。
Production ではコード分割やCSSの処理が成熟しているRollupを使ってビルドを行う。ESM はまだブラウザのサポートが弱く、バンドルされてない ESM は非効率なためビルドを行う設計にしている。将来的にesbuildの機能が安定してきたらRollupからesbuildを用いたビルドに変更する可能性がある。
Why Vite をざっくりまとめるとこんな感じでしょうか (解釈間違いあれば教えて下さい)
パフォーマンスの良いバンドラーとブラウザの ESM の仕組みを利用して従来のものより効率的かつ高速に動作するようにしたよ!って印象です。
Vite で React のプロジェクトを作成する
$ npm create vite@latest <project name> # package json に記載されるパッケージ名 ? Package name: › # react を選択 ? Select a framework: › - Use arrow-keys. Return to submit. vanilla vue ❯ react preact lit svelte # TypeScript を使う場合は react-ts を選択 ? Select a variant: › - Use arrow-keys. Return to submit. react ❯ react-ts Scaffolding project in /Users/kikiki/<project name> Done. Now run: npm install npm run dev
Scaffolding project Done. のメッセージが表示され新規ディレクトリが作成されていればOK
/project name |- .gitignore |- index.html … エントリーポイント |- /src … react のソースコード |- tsconfig.json |- tsconfig.node.json |- vite.config.ts … vite の設定ファイル
note.
調べた blog に載っていた npm init vite でも同じ手順でプロジェクトが作成できました。
ドキュメントに見当たらなかったので旧バージョンのコマンドなのかもしれませんが、深くは調べていません。
プロジェクトディレクトリを作成せず、現在の場所に展開したい場合
<project name> を指定せず . にすれば OK
⚠ <project name> が空の時は Package name と同じ名称のディレクトリが作成される
$ npm create vite@lastest . # ディレクトリ内にファイルが存在する場合は既存のファイルを削除しても構わないか聴かれる # .git など vite が作成しないファイルやディレクトリも消されてしまうっぽので注意が必要 ? Current directory is not empty. Remove existing files and continue? › (y/N)
React project の起動
メッセージにあったようにプロジェクトディレクトリに移動して、npm install して npm run dev すればOK
$ npm install $ npm run dev vite v2.9.9 dev server running at: > Local: http://localhost:3000/ > Network: use `--host` to expose ready in 1954ms.
localhost:3000/ にアクセスして React のロゴがクルクル回る初期画面が表示されていればOK
⚠ npx create react-app と異なり自動でブラウザでアプリを開いてくれないので自分で localhost:3000/ にアクセスする必要がある
dev モードでは HMR (Hot Module Replacement) = コードが変更されると自動的に再描画する 仕組みが入っているので、このまますぐに開発ができそうです!
その他のコマンド
- プロジェクトのビルド …
npm run build - ビルドした状態のプレビュー …
npm run preview
vite は dev の時は esbuild でビルド時は Rollup なのでビルド時のプレヴューができるようになってるっぽいです
起動時に自動でブラウザを開くようにする
create-react-app と同じように実行時に自動的にブラウザが開くようにする
vite.config.ts に下記オプションを追加すればOK
vite.config.ts
export default defineConfig({
+ server: {
+ open: true,
+ },
plugins: [react(), tsconfigPaths()],
});
既に localhost がブラウザで開いている場合は別のタブが開くのではなく既に開いているタブが再起動するので無駄にタブが増えず良きです
static なファイルの置き場所
vite では JS ファイルで import した画像などは自動的にハッシュ化されたパスに変換してくれるようです
JS でバンドルするまでもない static な CSS や画像は /public というフォルダを作成しそこに配置すればOK
⚠ デフォルトでは public フォルダがが存在しないので作成する必要がある
/public ディレクトリ内に置かれたファイルは JS から / でアクセスが可能になります
例
/project name |- index.html |- /public | |- /images | |- sample.jpg |- /src
/src/App.tsx
function App() { return ( {/* /public/images/sample.jpg は /images/sample.jpg でアクセスできる */} <img src="/images/sample.jpg" alt="" /> ) }
所管
CLI が用意されているので、簡単に React + vite なプロジェクトを作成することができました!
体感として webpack な create-react-app より npm run dev した際の起動時間が超速って感じです。追って ESLint + Prettier などの設定もしてみたいと思います。
おわり ₍ ᐢ. ̫ .ᐢ ₎
続き
[参考]
これは Vita 。
