Viteを軽く触ってみて分かった使い方とかメモ
色々試してるリポジトリ
Viteのinstall/設定ファイルの作成
ドキュメント通りにnpm create vite@latest
で自分の作りたい環境からテンプレートを作って、そこからカスタマイズしてくのが楽そうだった。
ちなみに以下はTypeScript + Vue3のViteのbuildのconfigファイル、webpackに比べると非常にシンプル。
import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue()] })
Viteの開発build
開発用のbuildはnpm run vite
で行う。実行するとwebpack-dev-server的なものが立ち上がりファイル修正時の自動ビルド、ホットリロードが実行される。
体感的にはすごくサクサクだった。
Viteではプロジェクトのrootにindex.html
を配置して、そこがデフォルトのエントリになる。
お気づきかもしれませんが、Vite プロジェクトでは index.html は public 内に隠れているのではなく、最も目立つ場所にあります。これは意図的なものです。開発中、Vite はサーバで、index.html はアプリケーションのエントリポイントです。 はじめに | Vite
jsのエントリの読み込みはscript type="module"
で、読み込みたいjsを読み込めばよい。
※読み込むと自動的にエントリーになる。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <link rel="icon" href="/favicon.ico" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Vite App</title> </head> <body> hello My index <div id="vue-root"> <ts-counter></ts-counter> <js-counter></js-counter> </div> <script type="module" src="/src/javascripts/entries/index.js"></script> </body> </html>
Viteの本番build
本番用のbuildはnpm run vite build
で実行される。この時に裏でRollup
によって実行されるためbuild.rollupOptions
でこの時のオプションを色々修正できる。
npm run vite preview
を実行するとビルド結果をローカルで確認できる。
vite preview コマンドは、ローカルで静的なウェブサーバを起動し、dist のファイルを http://localhost:4173 で配信します。これは、プロダクションビルドが問題ないかどうかを自分のローカル環境で確認する簡単な方法です。 ja.vitejs.dev
その他Tips
build時にpublic/packsに出力したい
build.outDir
、build.assetsDir
をいじれば任意のパスにbuildできる。
manifest
をtrue
にすればmanifestも吐き出される。
build: { manifest: true, outDir: "public", assetsDir: "packs", },
レガシーブラウザへの対応
ViteはNative ESMをサポートしているブラウザ向けにビルドするので、サポートしてないブラウザでは動かない。
レガシーブラウザへの対応は、@vitejs/plugin-legacy
でできるっぽい。
babelとかcorejsに依存しているから、pluginを入れて設定いれるだけで自動的やってくれるっぽい。
Vite's default browser support baseline is Native ESM. This plugin provides support for legacy browsers that do not support native ESM when building for production. https://github.com/vitejs/vite/blob/main/packages/plugin-legacy/package.json
mpaにしたい(明示的にエントリーを指定したい)
rollupOptions.input
で任意のhtmlをentryに含めるようにすればいいっぽい。
mpaのoutputパスを任意のパスにしたい
Viteはwebpackみたいにentry単位にoutputを設定することは簡単にはできないっぽい。
You can't because vite build runs a single Rollup build. If you want multiple builds, have multiple vite config files and run vite build -c different.config.js https://github.com/vitejs/vite/issues/2039
jsとかcssとかだったらいいけど、root直下にhtmlをエントリーのhtmlをたくさん置きたくないので、
src/pages
配下に置きたいけどoutput
を修正できない。
またassetsDir
とかでもいじれないから以下のようになってしまい/src/pages
みたいなパスでアクセスすることになる。。。
public ├── manifest.json ├── packs │ ├── home.449f531d.css │ ├── home.fe9aefcd.js │ ├── index.9506a175.js │ ├── index.95a8fec0.css │ ├── jsCounter.434c301e.css │ └── jsCounter.ad43c1b1.js └── src └── pages ├── home.html ├── index.html └── sub └── index.html
vite-plugin-mpa
を使うといい感じのpathにビルド後にbuildパスを書き換えてくれるっぽいが、
jsとhtmlを一緒のディレクトリに配置しないといけないっぽい。
このへんのコード
CSSの分割方法を調整したい
CSSの分割方法とかは、自動適用されるので無効化するか、提供されるものを使うかしかないっぽい?
ビルドの最適化 以下にリストされている機能は、ビルドプロセスの一部として自動的に適用され、無効にする場合を除いて、明示的に構成する必要はありません。 特徴 | Vite