Laravel Blade Hot Refresh With Vite

News

July 14th, 2022

laravel-vite-featured.jpg

The Laravel team updated the first-party Laravel vite-plugin package to support full page reload on blade/arbitrary file changes. Vite will do a full page reload when you edit a blade template (or any other file you configure) that changes. No more manual browser refreshing is required during development!

The basic configuration in your vite.config.js file looks like the following when installing a new Laravel project:

1import { defineConfig } from 'vite';
2import laravel from 'laravel-vite-plugin';
3 
4export default defineConfig({
5 plugins: [
6 laravel({
7 input: [
8 'resources/css/app.css',
9 'resources/js/app.js'
10 ],
11 refresh: true,
12 }),
13 ],
14});

The above snippet is what ships with a brand-new Laravel application; you don't have to do anything to get hot reloads working on a new project.

Note the refresh config–when set to true, the Laravel Vite plugin will refresh the page when you update a file in the following paths:

1routes/**
2resources/views/**

That convention might work for most projects, but if you want to include other paths or files, you can configure the refresh property:

1import { defineConfig } from 'vite';
2import laravel from 'laravel-vite-plugin';
3 
4export default defineConfig({
5 plugins: [
6 laravel({
7 input: [
8 'resources/css/app.css',
9 'resources/js/app.js'
10 ],
11 refresh: [
12 'resources/routes/**',
13 'routes/**',
14 'resources/views/**',
15 ],
16 }),
17 ],
18});

See Working with Blade & Routes in the official documentation for further details on configuration options.

Try it out

Let's set up a demo Laravel application to demonstrate hot reloading. First, let's create a new demo project:

1laravel new blade-hot-reload --git
2cd blade-hot-reload

Once the project is installed, add the following somewhere to the <head/> of the welcome.blade.php file found in resources/views/:

1@vite('resources/js/app.js')

Next, you'll want to install NPM dependencies and run the dev command:

1npm install
2npm run dev

And that's it! If you make a change to a blade file or a route, you'll see something like the following in the console:

Vite page reload console output

Any change you make should reflect immediately, depending on your local development environment setup.

Filed in:

Paul Redmond

Full stack web developer. Author of Lumen Programming Guide and Docker for PHP Developers.

Laravel News Partners