avataruuki.dev

laravel-vite-pluginで任意のpublicディレクトリに出力した時のhot reloadの動作について

  • Vite
  • Laravel
  • 1 min read

Laravel環境でlaravel-vite-pluginを使った時、buildDirectory を任意のディレクトリに変えた場合、 hot reload の拾わせ方にお作法があった為、備忘録として。

まず、大きく変わった事をしない構成。

この時、public以下に別のビルドディレクトリをしていると、 明示的に hotFile のpathを定義しても hot reload が動作しなくなる。

vite.config.js
  plugins: [
    ...,
    laravel({
      input: ['src/js/app.ts', 'src/styles/style.scss'],
      buildDirectory: 'dist',
      refresh: true,
      hotFile: path.join(backendPublicPath, 'hot')
    }),
  ]

この事象は、laravel/framework#42994 に類似の起票があり、 見る限り、@vite ディレクティブの第2引数として別途、buildDirectory を取るようになっているため、 第1引数の buildDirectory と別で渡すことで、hot reload が機能するようになるといった内容がコメントされていた。

ちなみにこの仕様はドキュメントの、Asset Bundling (Vite)ページ、Installation & Setup内、 Loading Your Scripts and Stylesに、 Given build path is relative to public path として、しっかり例が示されている。