v1 からの移行
設定オプションの変更
以下のオプションは削除されましたので、プラグインで実装してください:
resolverstransformsindexHtmlTransforms
jsxとenableEsbuildは削除されました。代わりに新しいesbuildオプションを使ってください。CSS 関連のオプションは
cssの下に移動しました。すべてのビルドオプションは
buildの下に移動しました。rollupInputOptionsとrollupOutputOptionsはbuild.rollupOptionsに置き換えられました。esbuildTargetはbuild.targetになりました。emitManifestはbuild.manifestになりました。- 以下のビルドオプションは、プラグインフックや他のオプションで実現できるため、削除されました:
entryrollupDedupeemitAssetsemitIndexshouldPreloadconfigureBuild
すべてのサーバオプションは、
serverの下に移動しました。hostnameはserver.hostになりました。httpsOptionsは削除されました。server.httpsはオプションオブジェクトを直接受け取ることができます。chokidarWatchOptionsはserver.watchになりました。
assetsIncludeが、関数ではなく、string | RegExp | (string | RegExp)[]を想定するようになりました。すべての Vue 固有のオプションは削除され、代わりに Vue プラグインにオプションを渡します。
Alias の動作変更
alias が @rollup/plugin-alias に渡されるようになり、開始/終了のスラッシュが不要になりました。この動作は直接置換するようになったので、1.0 スタイルのディレクトリエイリアスキーから終了のスラッシュを削除する必要があります:
- alias: { '/@foo/': path.resolve(__dirname, 'some-special-dir') }
+ alias: { '/@foo': path.resolve(__dirname, 'some-special-dir') }
また、[{ find: RegExp, replacement: string }] というオプション形式を使えば、より精密な制御が可能です。
Vue サポート
Vite 2.0 のコアはフレームワークに依存しないようになりました。Vue のサポートは、@vitejs/plugin-vue を通じて提供されるようになりました。これをインストールして、Vite の設定に追加してください:
import vue from '@vitejs/plugin-vue'
import { defineConfig } from 'vite'
export default defineConfig({
plugins: [vue()]
})
カスタムブロックの変換
カスタムプラグインを使用すると、以下のように Vue のカスタムブロックを変換することができます:
// vite.config.js
import vue from '@vitejs/plugin-vue'
import { defineConfig } from 'vite'
const vueI18nPlugin = {
name: 'vue-i18n',
transform(code, id) {
if (!/vue&type=i18n/.test(id)) {
return
}
if (/\.ya?ml$/.test(id)) {
code = JSON.stringify(require('js-yaml').load(code.trim()))
}
return `export default Comp => {
Comp.i18n = ${code}
}`
}
}
export default defineConfig({
plugins: [vue(), vueI18nPlugin]
})
React サポート
React Fast Refresh のサポートは、@vitejs/plugin-react で提供されるようになりました。
HMR API の変更
import. は非推奨となりました。import. は、単一または複数の依存関係を受け入れることができるようになりました。
マニフェストフォーマットの変更
ビルドマニフェストが以下のフォーマットになりました:
{
"index.js": {
"file": "assets/index.acaf2b48.js",
"imports": [...]
},
"index.css": {
"file": "assets/index.7b7dbd85.css"
}
"asset.png": {
"file": "assets/asset.0ab0f9cd.png"
}
}
エントリ JS チャンクについては、インポートされたチャンクもリストアップされ、プリロードディレクティブのレンダリングに使用できます。
プラグイン作成者向け
Vite 2 は、Rollup プラグインを拡張し完全に再設計されたプラグインインタフェイスとなっています。新しいプラグイン開発ガイドをお読みください。
v1 プラグインを v2 に移行する際の一般的なポイントです:
resolvers->resolveIdフックを使ってください。transforms->transformフックを使ってください。indexHtmlTransforms->transformIndexHtmlフックを使ってください。- 仮想ファイルの配信 ->
resolveId+loadフックを使ってください。 alias、define、その他の設定オプションの追加 ->configフックを使用してください。
ロジックのほとんどはミドルウェアではなくプラグインのフックを介して行われるべきなので、ミドルウェアの必要性は大幅に減少しています。内部のサーバアプリは、Koa から古き良き connect のインスタンスに変わりました。