Use Laravel Elixir with Craft CMS
You can already use Laravel Elixir with Craft. It's rather straight forward. In fact, Matt Stauffer has an excellent write up on using Elixir on his company blog., (*1)
However, when using a CDN such as CloudFlare or Fastly. You might want to take advantage of file versioning to bust the cache. This plugin lets you use Elixir's built in versioning in your Craft templates!, (*2)
Requirements
npm, (*3)
Installation and Setup
If you haven't read the Elixir documentation on the Laravel website or the blog post above, Here is a quick overview on setting up Elixir., (*4)
create a package.json
with the following content:, (*5)
{
"private": true,
"devDependencies": {
"gulp": "^3.9.1"
},
"dependencies": {
"laravel-elixir": "^5.0.0"
}
}
run the npm install command:, (*6)
npm install
, (*7)
add your SCSS, JavaScript and etc just like a Laravel project under resources/assets/sass
and resources/assets/js
., (*8)
create a gulpfile.js
with your contents or copy this one:, (*9)
var elixir = require('laravel-elixir');
elixir(function(mix) {
mix.sass('app.scss')
.version('css/app.css');
});
Run gulp watch
!, (*10)
When using the Elixir version function your CSS/JavaScript will output to public/css/all-16d570a7.css
. This is where this plugin comes in!, (*11)
Usage
With Laravel there is an Elixir PHP helper function that retrieves the correct version. Now you can do this in Craft templates!, (*12)
Twig Function, (*13)
{{ elixir('css/all.css') }}
Note: you can optionally output the entire HTML tag by passing a second argument true
to the function (e.g {{ elixir('css/all.css', true) }}
., (*14)
Twig Filter, (*15)
{{ 'css/all.css' | elixir }}
<link rel="stylesheet" href="{{ craft.elixir.version('css/all.css') }}">
, (*16)
and, (*17)
<script src="{{ craft.elixir.version('js/app.js') }}"></script>
, (*18)
If you are especially lazy, you can have the plugin automatically create the entire tag, based on the file extension., (*19)
{{ craft.elixir.withTag('js/app.js') | raw }}
, (*20)
This will output the <script>
or <link>
tags appropriately., (*21)
Credits
About Venveo
Venveo is a Digital Marketing Agency for Building Materials Companies in Blacksburg, VA. Learn more about us on our website., (*22)
License
The MIT License (MIT). Please see License File for more information., (*23)