laravel-mix-pug-recursive
Version:
Laravel Mix Plugin for compiling Pug/Jade templates.
93 lines (69 loc) • 2.82 kB
Markdown
for compiling Pug/Jade templates.
<p align="center">
<a href="https://www.npmjs.com/package/laravel-mix-pug"><img src="https://img.shields.io/npm/v/laravel-mix-pug.svg" alt="NPM"></a>
<a href="https://www.npmjs.com/package/laravel-mix-pug"><img src="https://img.shields.io/npm/dt/laravel-mix-pug.svg" alt="NPM"></a>
<a href="https://www.npmjs.com/package/laravel-mix-pug"><img src="https://img.shields.io/npm/l/laravel-mix-pug.svg" alt="NPM"></a>
</p>
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](https://github.com/JeffreyWay/laravel-mix).
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:
```js
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.
```js
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
```pug
a(href=seed.demo.anchor.link) seed.demo.anchor.name
```
### locals
It's possible to pass in an object which will be added to locals in your pug templates:
```js
mix.pug('src/**/*.pug', 'dist', {
locals: {
config: { baseUrl: 'http://my-template.dev/' }
}
});
```
and in your pug file:
```pug
link(rel="stylesheet" media="screen" href=`{config.baseUrl}css/app.css`)
script(src=`{config.baseUrl}js/main.js`)
```
### pug
You can pass in [pug config options](https://pugjs.org/api/reference.html#options) under `pug` key:
```js
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/{..}`:
```js
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](http://opensource.org/licenses/MIT).
Laravel Mix Plugin