Laravel Mix Plugin for compiling Pug/Jade templates.
This package provides a plugin for Laravel Mix to compile pug templates. laravel-mix-pug-recursive
requires Laravel Mix to work. Please follow the instructions on how to use it on the package repository.
Install this package into your project:
npm install laravel-mix-pug-recursive --save-dev
Head over to your webpack.mix.js
and register it on the Laravel Mix API:
let mix = require('laravel-mix');
mix.pug = require('laravel-mix-pug-recursive');
mix.js('src/app.js', 'dist')
.sass('src/app.scss', 'dist')
.pug('src/**/*.pug', 'dist')
.setPublicPath('dist');
You can also pass in a third optional parameter: options object. It accepts two options:
This is a path to a folder with seed files. Files can be of type json
or yaml
. They will be parsed and provided in your pug template locals under the seed file name and then contents.
mix.pug('src/**/*.pug', 'dist', {seeds:'src/seeds'});
And if you have a file demo.yml
in there all the content will be available in your template under
a(href=seed.demo.anchor.link) seed.demo.anchor.name
It's possible to pass in an object which will be added to locals in your pug templates:
mix.pug('src/**/*.pug', 'dist', {
locals: {
config: { baseUrl: 'http://my-template.dev/' }
}
});
and in your pug file:
link(rel="stylesheet" media="screen" href=`{config.baseUrl}css/app.css`)
script(src=`{config.baseUrl}js/main.js`)
You can pass in pug config options under pug
key:
mix.pug('src/**/*.pug', 'dist', {
pug: {
pretty: true,
debug: true
}
});
It is possible to change to output file extension and exclude part of the path.
i.e.: You want your destination file to be in resources/assets/views
and the folder structure in there to continue from the resources/assets/pug/{..}
:
mix.pug('resources/assets/pug/**/*.pug', 'resources/assets/views', {
ext: '.blade.php',
excludePath: 'resources/assets/pug'
});
Laravel Mix Pug is open-sourced software licensed under the MIT license.