Skip to content

ideil/laravel-mix-twig

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Mix Twig

npm License: MIT

Laravel Mix extension that generates HTML from Twig templates.

Installing

Install with npm:

npm i -D laravel-mix-twig

Tested on laravel-mix@5.0.0.

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.

About

Laravel Mix extension that generates HTML from Twig templates

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •