2.0.2 • Published 2 years ago

laravel-mix-twig v2.0.2

Weekly downloads
3
License
MIT
Repository
github
Last release
2 years ago

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.

KeyTypeDefaultDescription
enabled{Boolean}trueDetermines 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}falseWhen 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}falsejs-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.

2.0.2

2 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.0.2

4 years ago

1.0.3

4 years ago

1.0.1

4 years ago

1.0.0

5 years ago