I use Laravel, and I upgraded Laravel to 10. Now, I want to replace Webpack with Vite, too. I do formal steps, and I stick to one step. In my case, my Webpack config is like this:
const mix = require('laravel-mix');
mix
.js('resources/js/app.js', 'public/tmp/app.js').vue()
.scripts([
'public/tmp/app.js',
'resources/vuexy-assets/vendors/js/extensions/dropzone.min.js',
'resources/vuexy-assets/vendors/js/tables/datatable/datatables.min.js',
'resources/vuexy-assets/vendors/js/tables/datatable/datatables.buttons.min.js',
'resources/vuexy-assets/vendors/js/tables/datatable/datatables.bootstrap4.min.js',
'resources/vuexy-assets/vendors/js/tables/datatable/buttons.bootstrap.min.js',
'resources/vuexy-assets/vendors/js/tables/datatable/dataTables.select.min.js',
'resources/vuexy-assets/vendors/js/tables/datatable/datatables.checkboxes.min.js',
'resources/vuexy-assets/vendors/js/charts/apexcharts.min.js',
'resources/vuexy-assets/js/core/app-menu.min.js',
'resources/vuexy-assets/js/core/app.min.js',
'resources/vuexy-assets/js/scripts/components.min.js',
'resources/vuexy-assets/js/scripts/footer.min.js',
'resources/vuexy-assets/js/scripts/extensions/toastr.min.js',
'resources/vuexy-assets/vendors/js/extensions/toastr.min.js',
'resources/vuexy-assets/js/scripts/ui/data-list-view.min.js',
'node_modules/sweetalert2/dist/sweetalert2.all.min.js',
], 'public/js/app.js')
.styles([
'resources/vuexy-assets/vendors/css/vendors-rtl.min.css',
'resources/vuexy-assets/css-rtl/bootstrap.min.css',
'resources/vuexy-assets/css-rtl/bootstrap-extended.min.css',
'resources/vuexy-assets/css-rtl/pages/data-list-view.min.css',
'resources/vuexy-assets/css-rtl/components.min.css',
'resources/vuexy-assets/css-rtl/themes/semi-dark-layout.min.css',
'resources/vuexy-assets/css-rtl/core/menu/menu-types/vertical-menu.min.css',
'resources/vuexy-assets/css-rtl/custom-rtl.min.css',
'resources/vuexy-assets/css-rtl/plugins/extensions/toastr.min.css',
'resources/vuexy-assets/css-rtl/pages/app-chat.min.css',
'resources/vuexy-assets/vendors/css/tables/datatable/datatables.min.css',
'resources/vuexy-assets/css-rtl/colors.min.css',
'resources/vuexy-assets/vendors/css/extensions/toastr.css',
'resources/vuexy-assets/vendors/css/charts/apexcharts.css',
'resources/css/videojs.css',
], 'public/css/app.css');
The Webpack processed resources/js/app.js
into public/tmp/app.js
and then converted all my JS files into one file without extra changes on other JS files. Also, for CSS files, it combined all CSS files into one file. Now I want to convert this to vite config file to do that.
To migrate from Laravel Mix to Vite, you need to follow these steps:
vite.config.js
file in your project root:package.json
scripts:@mix()
tags in your layouts and instead use@vite
to reference your assets:This will create a
dist
directory with your built assets.Please note that Vite does not support combining multiple JS or CSS files into one file like Laravel Mix does. You will need to import your JS and CSS files in your
app.js
file or in your Vue components. Also, you have to convert any existing JavaScriptrequire
statements toimport
.For example, in your
app.js
file:webpack.mix.js
file and also remove Laravel Mix:Also, note that Vite has a different way of handling assets. You might need to adjust your asset paths or move your assets to the
public
directory. Check the Vite documentation for more details.