Laravel Front End Assets Quickstart
Front End, Laravel, gulp
Laravel is pre-configured to use Node and Gulp (wrapped in Laravel elixir
) to manage and build front-end assets.
Node is used to manage dependencies.
Quick Start Bootstrap
- In the project root run
npm install
to fetch the packages defined inpackage.json
- Enter
gulp
to run the default elixir task - Bootstrap SASS files will be built in to
resources/assets/sass/app.scss
- There is a font
@import
rule inresources/assets/sass/app.scss
- more efficient to import fonts via HTML - Starter variables file at
resources/assets/sass/variables.scss
Set Node Version
A modern node is required - if necessary use nvm
to load in a suitable version:
nvm ls # List available local node versions
nvm ls-remote # List available remote node versions
nvm install v6.5.0 # Install v6.5.0
nvm use v6.5.0 # Use v6.5.0
See nvm for more.
Versioning
Amend Gulpfile.js
:
const elixir = require('laravel-elixir');
require('laravel-elixir-vue-2');
/*
|--------------------------------------------------------------------------
| Elixir Asset Management
|--------------------------------------------------------------------------
|
| Elixir provides a clean, fluent API for defining some basic Gulp tasks
| for your Laravel application. By default, we are compiling the Sass
| file for your application as well as publishing vendor resources.
|
*/
elixir(mix => {
mix.sass('app.scss')
.webpack('app.js')
.version(['css/app.css', 'js/app.js']); // app.css and app.js are now cache-busting;
// Add glyphicons from Bootstrap
mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/','public/build/fonts/bootstrap');
mix.browserify('app.js');
});
Reference the versioned CSS file in a blade view - possibly resources/views/partials/head.blade.php
:
<link rel="stylesheet" href="{{ elixir ('css/app.css') }}" media="screen" title="no title" charset="utf-8">
Reference the versioned JavaScript file in a blade view - possibly resources/views/partials/footer.blade.php
:
<script src="{{ elixir ('js/app.js') }}"></script>
@stack('script-footer')
comments powered by Disqus