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.jsfile in your project root:package.jsonscripts:@mix()tags in your layouts and instead use@viteto reference your assets:This will create a
distdirectory 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.jsfile or in your Vue components. Also, you have to convert any existing JavaScriptrequirestatements toimport.For example, in your
app.jsfile:webpack.mix.jsfile 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
publicdirectory. Check the Vite documentation for more details.