swisnl / laravel-mix-svg-sprite

SVG sprite component for Laravel Mix
MIT License
17 stars 2 forks source link
hacktoberfest laravel laravel-mix mix sprite svg svg-sprite svgo webpack

laravel-mix-svg-sprite

Node Version Latest Version on NPM Code Style Software License Buy us a tree Run Status Known Vulnerabilities Made by SWIS

SVG sprite component for Laravel Mix, wrapping SVG sprite loader and SVGO loader.

Install

Install with npm:

$ npm install --save-dev laravel-mix-svg-sprite

Usage

This component adds an extra API to Mix to create a SVG sprite of separate SVG files. It can be used just like the other API's of Mix:

// webpack.mix.js

let mix = require('laravel-mix');
require('laravel-mix-svg-sprite');

mix
    .js('src', 'output')
    .sass('src', 'output')
    .svgSprite(
        'src/icons', // The directory containing your SVG files
        'output/sprite.svg', // The output path for the sprite
        [loaderOptions], // Optional, see https://github.com/kisenka/svg-sprite-loader#configuration
        [pluginOptions] // Optional, see https://github.com/kisenka/svg-sprite-loader#configuration
    );

⚠️ This plugin only adds a loader to the Webpack configuration, it doesn't glob your icons directory and include every file it finds. You need to require the icons from within your code (JS, CSS, etc.) just like other modules, to have them added to the sprite!

Configuration

The config of this component is passed directly to svg-sprite-loader and its plugin. Please refer to their documentation for further details. This are our defaults:

Config.svgSprite = {
    /*
     * @see https://github.com/kisenka/svg-sprite-loader#configuration
     */
    loaderOptions: {
        extract: true
    },
    /*
     * @see https://github.com/kisenka/svg-sprite-loader#configuration
     */
    pluginOptions: {
        plainSprite: true
    }    
};

Configuration for SVGO is copied from Config.imgLoaderOptions.svgo. If you disable SVGO for the image-loader, it is also disabled for this component.

Change log

Please see CHANGELOG for more information on what has changed recently.

Testing

$ npm test

Contributing

Please see CONTRIBUTING and CODE_OF_CONDUCT for details.

Security

If you discover any security related issues, please email security@swis.nl instead of using the issue tracker.

Credits

This component is a wrapper for SVG sprite loader and SVGO loader, so a huge thanks to their contributors!

License

The MIT License (MIT). Please see License File for more information.

This package is Treeware. If you use it in production, then we ask that you buy the world a tree to thank us for our work. By contributing to the Treeware forest you’ll be creating employment for local families and restoring wildlife habitats.

SWIS :heart: Open Source

SWIS is a web agency from Leiden, the Netherlands. We love working with open source software.