Basic Laravel Workflow

Let's review a general workflow that you might adopt for your own projects.

Step 1: Install Laravel

laravel new my-app

Step 2: Install Node Dependencies

By default, Laravel ships with Laravel Mix as a dependency. This means you can immediately install your Node dependencies.

npm install

Step 3: Visit webpack.mix.js

Think of this file as your home base for all front-end configuration.

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

mix.js('resources/js/app.js', 'js').sass('resources/sass/app.scss', 'css');

Using the code above, we've requested JavaScript ES2017 + module bundling, as well as Sass compilation.

Step 4: Compilation

If those files don't exist in your project, go ahead and create them. Populate app.js with a basic alert, and app.scss with any random color on the body tag.

// resources/js/app.js

alert('Hello World');
// resources/sass/app.scss
$primary: red;

body {
    color: $primary;
}

When you're ready, let's compile.

npx mix

You should now see two new files within your project's public directory.

  • ./public/js/app.js
  • ./public/css/app.css

Excellent! Next, let's get into a groove. It's a pain to re-run npx mix every time you change a file. Instead, let's have Mix (and ultimately webpack) watch these files for changes.

npx mix watch

Perfect. Make a minor change to resources/js/app.js and webpack will automatically recompile.

Tip: You may also use mix.browserSync('myapp.test') to automatically reload the browser when any relevant file in your Laravel app is changed.

Step 5: Update Your View

Laravel ships with a static welcome page. Let's use this for our demo. Update it to:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Laravel</title>

        <link rel="stylesheet" href="/css/app.css" />
    </head>
    <body>
        <h1>Hello World</h1>

        <script src="/js/app.js"></script>
    </body>
</html>

Run your Laravel app. It works!