Webpack mix Logo

Introduction

How it looks like in local env

Source code in local env

    <head>
        <title>Login</title>

        <!-- CSS + JS
        ================================================== -->
        <!-- CSS -->
        <link rel="stylesheet" href="css/local/private/flashMessages.css">
        <link rel="stylesheet" href="css/local/private/loadingOverlay.css">
        <link rel="stylesheet" href="css/local/private/login.css">
        <link rel="stylesheet" href="css/local/private/general.css">

        <!-- JS -->
        <script src="/js/jquery-3.7.1.js"></script>
        <script src="/js/local/private/serverLessRequests.js"></script>
    </head>

Css assets in local env

Js assets in local env

webpack.mix.js file instructions to compile all the assets into a single compressed file css and a single js file

const mix = require('laravel-mix');

mix
    .styles([
    'public/css/local/private/flashMessages.css',
    'public/css/local/private/loadingOverlay.css',
    'public/css/local/private/login.css',
    'public/css/local/private/general.css',
], 'public/css/prod/app.css')
    .scripts([
    'public/js/jquery-3.7.1.js',
    'public/js/local/private/serverLessRequests.js',
], 'public/js/prod/app.js')
    .version();

How it looks like in production env

Source code in local env

    <head>
        <title>Login</title>

        <!-- CSS + JS
        ================================================== -->
        <script src="/js/prod/app.js?id=9bd46f5c9635c3649fbf84b919a601d8"></script>
        <link rel="stylesheet" href="/css/prod/app.css?id=c831546cef7b1f922f057604b7990238">
    </head>

Css assets in prod env

Js assets in prod env

In the template

@if(app()->environment('prod'))
    <script src="{{ mix('js/prod/app.js') }}"></script>
    <link rel="stylesheet" href="{{ mix('css/prod/app.css') }}">
@else
    <!-- CSS -->
    <link rel="stylesheet" href="css/cookies.css">
    <link rel="stylesheet" href="css/local/private/loadingOverlay.css">
    <link rel="stylesheet" href="css/local/private/flashMessages.css">
    <link rel="stylesheet" href="css/local/private/login.css">
    <link rel="stylesheet" href="css/local/private/general.css">

    <!-- JS -->
    <script src="/js/jquery-3.7.1.js"></script>
    <script src="/js/local/private/serverLessRequests.js"></script>
    <script src="/js/cookies.js"></script>
@endif

How it runs

Command npm run production

Demonstration

( Click on the image to watch the video )

Demonstration video