laravel-mix-twig
v2.0.2
Published
Laravel Mix extension that generates HTML from Twig templates
Downloads
187
Maintainers
Readme
Laravel Mix Twig
Laravel Mix extension that generates HTML from Twig templates.
Installing
Install with npm:
npm i -D laravel-mix-twig
Tested on [email protected]
.
Base configuration of webpack.mix.js
to make the extension work:
const mix = require('laravel-mix');
require('laravel-mix-twig');
mix.twig();
By default it will search for Twig templates in ./resources/twig
directory that isn't prefixed with underscore **/!(_)*.twig
and try to generate HTML output to ./html
.
Options
You can configure extension with custom options as well.
| Key | Type | Default | Description |
|---------------|-----------------------|-----------------------|-------------|
| enabled
| {Boolean}
| true
| Determines whether HTML should be generated. |
| dir
| {String}
| '__dirname.split('node_modules')[0]'
| Path to project directory |
| root
| {String}
| './resources/twig'
| Path to root directory of Twig templates. |
| entries
| {Array}
| ['**/!(_)*.twig']
| Match entries with glob
. |
| output
| {String}
| './html'
| Path to HTML output. |
| data
| {String}
| 'data/**/*.{y?(a\|)ml,json}'
| Path to YAML and/or JSON files in root directory. |
| dataExtend
| {Object}
| {}
| Extend data manually. |
| replaceOutputPath
| {String}
| ''
| Removes symbols in output path |
| flatten
| {Boolean}
| false
| When enabled, all HTML will be placed in the output folder without preserving the directory structure. |
| loader
* | Object
| {}
| twig-html-loader
options. |
| html
* | Object
| {}
| html-webpack-plugin
options. |
| beautify
| {Boolean\|Object}
| false
| js-beautify
options. |
* marked options can had unexpected behavior. Please see example of advanced configurations below with explanations.
mix.twig({
enabled: !mix.inProduction(), // Enabled in development mode only
root: './dev/templates', // Change default root path
entries: ['index.twig', 'entries/*.twig'], // Custom entries
output: './pub/templates', // Generate output HTML to this path
data: '**/*.y?(a|)ml', // Search all `*.yml` and/or `*.yaml` files in root directory
dataExtend: {
ENV_IS_PRODUCTION: mix.inProduction(), // Add the environment variable
},
flatten: true, // Don't preserve the output directory structure
loader: { // Custom `twig-html-loader` options
data: {}, // * Gets automatically generated object from files of `data` option
},
html: { // Custom `html-webpack-plugin` options
filename: {String}, // * Will be overwritten for each `entries`
template: {String}, // * Depends on each path of the template from the root and its name
},
beautify: { // Custom `js-beautify` options
'end_with_newline': true,
'indent_inner_html': true,
'preserve_newlines': false,
},
});
License
This project is licensed under the MIT License — see the LICENSE file for details.