Webpack loader used for inline replacement of SVG images with actual content of SVG files in Vue projects.

Overview

vue-svg-inline-loader

version downloads license paypal

Webpack loader used for inline replacement of SVG images with actual content of SVG files in Vue projects.

Loader parses only HTML template format.

Loader has built-in SVGO support for SVG optimization.

Sprite option works only with Vue Single File Component approach.


Vue CLI

Vue 3 projects created via Vue CLI aren't built on top of Webpack, they use Vite (which is build on top of Rollup) instead. In this case, this loader won't work. Please take a look at vue-svg-inline-plugin, which works similar to this loader.


Notable changes

  • v2.1.0
  • v2.0.0
    • Removed transpiled version
    • Removed core-js@2 dependency
    • Recreated all examples (except vanilla Webpack one) with up-to-date CLIs
  • v1.5.0
  • v1.4.4
    • Updated order of attributes operations
  • v1.4.0
    • Added new option: addTitle
    • Fixed issue with lowercase-ing attribute values
  • v1.3.1
    • Hotfixed issue with doubled attribute definitions on SVG node. This may introduce breaking changes for developers who used image definitions outside of template tag.
  • v1.3.0
  • v1.2.17
    • Add example usage configuration for laravel-mix based projects
  • v1.2.16
    • Added example for quasar based projects
  • v1.2.14
    • Added example for gridsome based projects
  • v1.2.11
    • Fixed a bug where original svg attributes were used by referencing svg rather than symbol itself. This may introduce breaking changes for developers who rely on this bugged behavior.
  • v1.2.6
    • Modified default value of svgo option to preserve viewBox attribute
    • Modified svgo option to accept true value as alias for default configuration
  • v1.2.5
    • Modified svgo option to accept null or false value for disabling SVG optimization
  • v1.2.3
    • Changed default value of md5 option to true
    • Added examples for webpack, vue-cli and nuxt based projects
  • v1.2.0
  • v1.1.3
    • Added transpiled version of loader
  • v1.1.0
    • Added new option: md5
  • v1.0.8
    • Options structure changed, deprecated options still get parsed to new ones
  • v1.0.0

Install

Via npm [package]:

$ npm install vue-svg-inline-loader --save-dev

Via yarn [package]:

$ yarn add vue-svg-inline-loader --dev

Usage

With webpack - webpack.config.js (recommended):

// webpack

module.exports = {
	module: {
		rules: [
			{
				test: /\.vue$/,
				use: [
					{
						loader: "vue-loader",
						options: { /* ... */ }
					},
					{
						loader: "vue-svg-inline-loader",
						options: { /* ... */ }
					}
				]
			}
		]
	}
};

With vue-cli - vue.config.js:
With gridsome - gridsome.config.js:
With quasar - quasar.conf.js:

// vue-cli, gridsome, quasar

module.exports = {
	chainWebpack: config => {
		config.module
			.rule("vue")
			.use("vue-svg-inline-loader")
				.loader("vue-svg-inline-loader")
				.options({ /* ... */ });
	}
};

With nuxt - nuxt.config.js:

// nuxt

module.exports = {
	build: {
		extend(config) {
			const vueRule = config.module.rules.find(({ test }) => test.toString() === /\.vue$/i.toString());
			vueRule.use = [
				{
					loader: vueRule.loader,
					options: vueRule.options
				}, {
					loader: "vue-svg-inline-loader",
					options: { /* ... */ }
				}
			];
			delete vueRule.loader;
			delete vueRule.options;
		}
	}
};

With quasar - quasar.conf.js:

// quasar

module.exports = {
	build: {
		extendWebpack(config) {
			const vueRule = config.module.rules.find(({ test }) => test.toString() === /\.vue$/.toString());
			vueRule.use.push({
				loader: "vue-svg-inline-loader",
				options: { /* ... */ }
			});
		}
	}
};

With laravel-mix - webpack.mix.js:

{ config.module.rules.push({ test: /\.vue$/, use: [{ loader: "vue-svg-inline-loader", options: { /* ... */ } }] }) });">
// laravel-mix

const mix = require("laravel-mix");

mix.override(config => {
	config.module.rules.push({
		test: /\.vue$/,
		use: [{
			loader: "vue-svg-inline-loader",
			options: { /* ... */ }
		}]
	})
});

Basic inline SVG usage with svg-inline keyword directive:

">
<img svg-inline class="icon" src="./images/example.svg" alt="example" />

Which replaces into:

Basic inline SVG sprite usage with svg-sprite keyword directive:

">
<img svg-inline svg-sprite class="icon" src="./images/example.svg" alt="example" />

Which replaces into:

Notice

Loader won't parse any images with Vue bindings used as src attribute [more info].

If you need to preserve image tag (e.g. in comments), you can wrap it in hash (#) or triple backtick (```) characters.

Configuration

Default options:

{
	inline: {
		keyword: "svg-inline",
		strict: true
	},
	sprite: {
		keyword: "svg-sprite",
		strict: true
	},
	addTitle: false,
	cloneAttributes: ["viewbox"],
	addAttributes: {
		role: "presentation",
		focusable: false,
		tabindex: -1
	},
	dataAttributes: [],
	removeAttributes: ["alt", "src"],
	transformImageAttributesToVueDirectives: true,
	md5: true,
	xhtml: false,
	svgo: true,
/* value true for svgo option is alias for:
	svgo: {
		plugins: [
			{
				removeViewBox: false
			}
		]
	},
*/
	verbose: false
}

Explanation:

  • inline.keyword:
    Defines keyword, which marks images you want to replace with inline SVG. Keyword has to be wrapped with whitespace characters (e.g. space). In case of some conflicts, you can also use data version of your keyword (e.g. data-keyword).

  • inline.strict:
    In strict mode loader replaces only images with defined keyword. If strict mode is disabled, loader replaces all images.

  • sprite.keyword:
    Defines keyword, which marks images you want to replace with inline SVG using inline sprites. Keyword has to be wrapped with whitespace characters (e.g. space). In case of some conflicts, you can also use data version of your keyword (e.g. data-keyword).

  • sprite.strict:
    In strict mode loader replaces only images with defined keyword. If strict mode is disabled, loader replaces all images.

  • addTitle:
    Transform image alt attribute into SVG title tag, if not defined (removed with SVGO by default). This option has no effect while using inline SVG sprites.

  • cloneAttributes:
    Array of attributes which will be cloned into SVG link node while using inline SVG sprites.

  • addAttributes:
    Object of attributes which will be added.

  • dataAttributes:
    Array of attributes which will be renamed to data-attributes.

  • removeAttributes:
    Array of attributes which will be removed.

  • transformImageAttributesToVueDirectives:
    Transforms all non-Vue image tag attributes via Vue v-bind directive. With this option enabled, Vue will handle merge / replace attributes, that are present on both resources - image tag and SVG tag. This might cause issues, when using Vue bindings on image tag attribute, that is also present on SVG tag (e.g.: class attribute). Please use verbose option for local debugging before submitting new issue.

  • md5:
    Use md5-encoded resource path as ID for inline SVG sprites instead of plaintext. Set it to false only for development purposes.

  • xhtml:
    In XHTML mode attribute minimization is forbidden. Empty attributes are filled with their names to be XHTML-compliant (e.g. disabled="disabled").

  • svgo:
    Pass SVGO configuration object (documentation can be found here) or true for default configuration. Pass null or false to disable SVG optimization.

  • verbose:
    Will print image tag, SVG tag and modified SVG tag (with attributes from image tag) for debugging purposes.

Notices

  • User-defined options are deep-merged with default options. Arrays are not concatenated.

Examples


License

MIT

Comments
  • src binding not finding svg file

    src binding not finding svg file

    Hello there, I'm not sure if this is an issue with the loader or merely a lack of my understanding. It appears that when I attempt to dynamically load an SVG using the v-bind:src approach on the image tag, the loader cannot find it.

    Loading SVG from src path

    <img svg-inline :src="`../../static/images/icon-${game.name}.svg`" />
    

    If I write it in normally src="../../static/images/icon-basketball.svg" it works.

    Loading SVG from build path I've also tried this:

    <img svg-inline :src="`/images/icon-${game.name}.svg`" />
    

    But it ends up just loading up an image tag with the SVG as it's src instead of inlining the SVG.

    Any ideas?

    opened by DavidVII 32
  • core-js issue after gridsome upgrade

    core-js issue after gridsome upgrade

    Thank for this cool package!

    I just upgraded my gridsome app and it now fails to compile (using yarn) with the following errors

    ERROR  Failed to compile with 67 errors                                                                                                                                                                   6:27:45 PM
    
    These dependencies were not found:
    
    * core-js/modules/es.array.concat in ./node_modules/gridsome/app/fetch.js, ./node_modules/gridsome/app/head.js and 2 others
    * core-js/modules/es.array.for-each in ./node_modules/gridsome/app/head.js, ./node_modules/gridsome/app/directives/image.js and 2 others
    * core-js/modules/es.array.from in ./node_modules/gridsome/app/directives/image.js, ./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/babel-loader/lib??ref--1-1!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-svg-inline-loader/dist/index.min.js??ref--0-2!./src/components/ScrollWords.vue?vue&type=script&lang=js&
    * core-js/modules/es.array.index-of in ./node_modules/gridsome/app/utils/class.js
    * core-js/modules/es.array.is-array in ./node_modules/gridsome/app/router.js, ./node_modules/gridsome/app/utils/class.js
    * core-js/modules/es.array.join in ./node_modules/gridsome/app/components/Image.js, ./node_modules/gridsome/app/utils/helpers.js
    * core-js/modules/es.array.map in ./node_modules/gridsome/app/entry.client.js, ./node_modules/gridsome/app/router.js and 2 others
    * core-js/modules/es.array.reduce in ./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/babel-loader/lib??ref--1-1!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-svg-inline-loader/dist/index.min.js??ref--0-2!./src/components/ScrollWords.vue?vue&type=script&lang=js&
    * core-js/modules/es.array.slice in ./node_modules/gridsome/app/components/Image.js, ./node_modules/gridsome/app/utils/helpers.js and 1 other
    * core-js/modules/es.date.to-string in ./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/babel-loader/lib??ref--1-1!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-svg-inline-loader/dist/index.min.js??ref--0-2!./src/layouts/Default.vue?vue&type=script&lang=js&
    * core-js/modules/es.function.name in ./node_modules/gridsome/app/entry.client.js, ./node_modules/gridsome/app/fetch.js and 1 other
    * core-js/modules/es.number.constructor in ./node_modules/gridsome/app/components/Link.js, ./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/babel-loader/lib??ref--1-1!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-svg-inline-loader/dist/index.min.js??ref--0-2!./src/components/ScrollWords.vue?vue&type=script&lang=js&
    * core-js/modules/es.object.to-string in ./node_modules/gridsome/app/entry.client.js, ./node_modules/gridsome/app/app.js and 4 others
    * core-js/modules/es.regexp.constructor in ./node_modules/gridsome/app/components/Link.js, ./node_modules/gridsome/app/utils/helpers.js
    * core-js/modules/es.regexp.exec in ./node_modules/gridsome/app/entry.client.js, ./node_modules/gridsome/app/components/Link.js and 2 others
    * core-js/modules/es.regexp.to-string in ./node_modules/gridsome/app/components/Link.js, ./node_modules/gridsome/app/utils/helpers.js
    * core-js/modules/es.string.ends-with in ./node_modules/gridsome/app/directives/image.js
    * core-js/modules/es.string.iterator in ./node_modules/gridsome/app/entry.client.js, ./node_modules/gridsome/app/app.js and 2 others
    * core-js/modules/es.string.link in ./node_modules/gridsome/app/head.js
    * core-js/modules/es.string.replace in ./node_modules/gridsome/app/utils/helpers.js, ./node_modules/gridsome/app/utils/class.js
    * core-js/modules/es.string.search in ./node_modules/gridsome/app/entry.client.js
    * core-js/modules/es.string.split in ./node_modules/gridsome/app/utils/helpers.js, ./node_modules/gridsome/app/utils/class.js
    * core-js/modules/es.string.starts-with in ./node_modules/gridsome/app/entry.client.js, ./node_modules/gridsome/app/components/Link.js and 1 other
    * core-js/modules/es.string.trim in ./node_modules/gridsome/app/utils/class.js
    * core-js/modules/es.symbol in ./node_modules/gridsome/app/app.js
    * core-js/modules/es.symbol.description in ./node_modules/gridsome/app/app.js
    * core-js/modules/es.symbol.iterator in ./node_modules/gridsome/app/app.js
    * core-js/modules/web.dom-collections.for-each in ./node_modules/gridsome/app/head.js, ./node_modules/gridsome/app/directives/image.js and 2 others
    * core-js/modules/web.dom-collections.iterator in ./node_modules/gridsome/app/entry.client.js, ./node_modules/gridsome/app/app.js
    

    If I completely remove vue-svg-inline-loader, everything works again.

    yarn list --depth 0:

    yarn list v1.22.0
    ,,,
    ├─ @babel/[email protected]
    ├─ @babel/[email protected]
    ...
    ├─ @gridsome/[email protected]
    ...
    ├─ [email protected]
    ├─ [email protected]
    ├─ core-uti[email protected]
    ...
    ├─ [email protected]
    ...
    ├─ [email protected]
    

    I feel that the issue is due to the usage of the 2.* version of core-js (wanted by this plugin) while gridsome 0.7 requires "@vue/babel-preset-app@^4.2.2 which expects core-js@^3.6.4.

    This is probably related to https://github.com/gridsome/gridsome/pull/982...

    Is there any way to make this plugin use core-js 3 ? (or any better way to fix this?)

    opened by oliverpool 16
  • Why is it remove viewBox attribute?

    Why is it remove viewBox attribute?

    I added inline svg file.

    SVG source:

    <svg width="33px" height="31px" viewBox="0 0 33 31" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Home</title>....
    

    Add code

    <img svg-inline class="icon" src="../assets/icons/home.svg" />
    

    after render

    <svg svg-inline="" role="presentation" focusable="false" width="33" height="31" xmlns="http://www.w3.org/2000/svg" class="icon">
    

    I don't resize SVG with CSS due to remove viewbox attribute

    opened by fatihhayri 14
  • Loading SVG from Alias Path not working

    Loading SVG from Alias Path not working

    Hi there,

    I just ran into this issue: while loading SVGs from relative paths "just works", it doesn't when using an alias path. This is my webpack config:

    module: {
            rules: [
    // ..                
                {
                    test: /\.vue$/,
                    use: [
                        'vue-loader', {
                        loader: "vue-svg-inline-loader",
                        options: {}
                    }]
                },
            ]
        },
    
    resolve: {
    // ...
            alias: {
    // ...
                "resources":    path.resolve(__dirname, "src/resources"),
    // ...
            }
        },
    

    And in one VUE single file component I'm using the following two. The latter is not working.

    <img svg-inline class="icon" src="../../../resources/icons/baseline-equalizer-24px.svg" alt="example" />
    <img svg-inline class="icon" src="~resources/icons/baseline-equalizer-24px.svg" alt="example" />
    
    opened by kaipaysen 14
  • parseError when using math operator (> or >=) on root element

    parseError when using math operator (> or >=) on root element

    Hi, There is an issue with parsing of math operator. The plugin think that my ">" (greater than) symbol is the end of the opening tag of the root element and append the sprite to this location which break the whole page. Greater than symbol inside string (v-if, v-show or ternary js operator) should be ignored.

    Source code:

    <template>
        <div v-if="lastItem > 10">
            <!-- more -->
        </div>
    </template>
    

    Compiled code:

    <template>
        <div v-if="lastItem ><svg xmlns="http://www.w3.org/2000/svg" style="display: none !important;"><symbol id="sprite-6e59d10b0d068a69ed07029d53a15aef" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 6 10"><path data-name="Polygone 2 copie 4 copy 2 copie" d="M0 5l6-5v10z" fill-rule="evenodd"/></symbol><symbol id="sprite-83def3b2274096294fe2023b84cc1ed6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 6 10"><path data-name="Polygone 2 copie 4 copy 2 copie" d="M6 5l-6 5V0z" fill-rule="evenodd"/></symbol></svg> 10">
             <!-- more -->
        </div>
    </template>
    

    Expected result:

    <template>
        <div v-if="lastItem > 10">
            <svg xmlns="http://www.w3.org/2000/svg" style="display: none !important;"><symbol id="sprite-6e59d10b0d068a69ed07029d53a15aef" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 6 10"><path data-name="Polygone 2 copie 4 copy 2 copie" d="M0 5l6-5v10z" fill-rule="evenodd"/></symbol><symbol id="sprite-83def3b2274096294fe2023b84cc1ed6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 6 10"><path data-name="Polygone 2 copie 4 copy 2 copie" d="M6 5l-6 5V0z" fill-rule="evenodd"/></symbol></svg>
            <!-- more -->
        </div>
    </template>
    
    opened by mrleblanc101 10
  • Attribute collision when one is bound and the other is not (using : shortand and not v-bind)

    Attribute collision when one is bound and the other is not (using : shortand and not v-bind)

    I upgraded my dependencies and I have some issues with the latest version (1.4.6). By testing the older releases, it appears that the bug got introduced on version 1.3.0 (1.2.18 works fine).

    My code:

          <img
            svg-inline
            src="../../assets/icon.svg"
            class="fill-current menu-icon"
            :class="{ 'text-red-900': !active }"
          />
    

    Expected output: <svg> tag with at least the static classes (fill-current menu-icon)

    Instead I get: the static part is removed, only the :class part is respected ()

    Interestingly, if I make a trivial modification to the class (add a whitespace for instance), the hot-reload injects the updated static classes and everything looks fine again.


    Furthermore, if I replace :class with v-bind:class

    • on v1.3.0, everything seems to be fine
    • on v1.4.6 the compilation fails with duplicate attribute: v-bind:class

    Probably relevant commit: https://github.com/oliverfindl/vue-svg-inline-loader/commit/f5f0a0ff1b44f5de9381f70c991089892901ef99 (#28)

    opened by oliverpool 9
  • How to use with laravel-mix

    How to use with laravel-mix

    This is not a direct issue but I struggle configuring this with laravel mix. I implemented this in the frontend, on Vue2, and I used the basic webpack config file. In the meantime, the dev team implemented the backend on Laravel along with Laravel-mix. Since then, vue-svg-inline-loader has stopped working. I think the culprit is the misconfiguration, as with laravel mix I do not have the "vue.config.js" file anymore, but I have "webpack.mix.js".

    I tried this:

    mix.webpackConfig({
        module: {
            rules: [
                {
                    test: /\.vue$/,
                    use: [
                        {
                            loader: "vue-loader",
                            options: { /* ... */ }
                        },
                        {
                            loader: "vue-svg-inline-loader",
                            options: { /* ... */ }
                        }
                    ]
                },
            ]
        },
    });
    

    and

    mix.webpackConfig({
        module : {
            rules : [
                {
                    use : [
                        'vue-svg-inline-loader',
                        {
                            loader: 'vue-svg-inline-loader',
                            options : {}
                        },
                    ]
                },
            ]
        },
    });
    

    What am I missing?

    Thank you

    opened by Darkecudoua 8
  • Render warning with nuxt

    Render warning with nuxt

    Hello there, I have a problem when rendering svgs in my nuxt project. It always shows me the following warning in the browser console: The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside <p>, or missing <tbody>. Bailing hydration and performing full client-side render.

    I am using the default config from the Readme file.

    build: {
      /*
      ** You can extend webpack config here
      */
      extend(config, ctx) {
        // Run ESLint on save
        if (ctx.isDev && ctx.isClient) {
          config.module.rules.push({
            enforce: 'pre',
            test: /\.(js|vue)$/,
            loader: 'eslint-loader',
            exclude: /(node_modules)/,
          });
    
          const vueRule = config.module.rules.find(rule => {
            return rule.test.test('.vue');
          });
          vueRule.use = [
            {
              loader: vueRule.loader,
              options: vueRule.options,
            },
            {
              loader: 'vue-svg-inline-loader',
            },
          ];
          delete vueRule.loader;
          delete vueRule.options;
        }
      },
    },
    

    Is there anything wrong with the configuration or am I just missing anything or is it supposed to be like that? Thanks in advance!

    opened by schnetzi 8
  •  Failed to mount component: template or render function not defined.

    Failed to mount component: template or render function not defined.

    Hi (again), sorry to bother you, but after I added your loader and put this code in my template

    <img svg-inline svg-sprite class="icon icon-arrow-bottom-icon" src="@/assets/images/sale.svg" alt="svgicons"/>
    

    I've got this warning in devtools console and my app stopped working (just plain whitescreen) "vue.esm.js?efeb:591 [Vue warn]: Failed to mount component: template or render function not defined."

    the loader was added right after vue-loader

      module: {
        rules: [
          {
            test: /\.vue$/,
            loader: 'vue-loader',
            options: vueLoaderConfig
          },
          {
            test: /\.vue$/,
            use: [
              "vue-loader",
              {
                loader: "vue-svg-inline-loader"
              },
            ]
          },
    ....
    

    and the vueLoaderConfig is:

    {
      loaders: utils.cssLoaders({
        sourceMap: sourceMapEnabled,
        extract: isProduction
      }),
      cssSourceMap: sourceMapEnabled,
      cacheBusting: config.dev.cacheBusting,
      transformToRequire: {
        video: ['src', 'poster'],
        source: 'src',
        img: 'src',
        image: 'xlink:href'
      }
    }
    
    opened by igorkurochka 8
  • Plugin remove SVG with defs / linearGradient

    Plugin remove SVG with defs / linearGradient

    Hi. I use your plugin and found next bug: In component use <img svg-inline svg-sprite src="home-arrow-down.svg" alt=""> and this svg file https://prnt.sc/oz801c. In output we get svg without defs area (and without linearGradient)

    opened by ps-hidden 7
  • Create a Nuxt Module export

    Create a Nuxt Module export

    Hi, I love this plugin, I currently use it in every Nuxt project I start. But I have to use the extends key inside nuxt.config.js and copy/paster my config everytime. I was wondering if it would be possible to add a Nuxt Module export (Something like: vue-svg-inline-loader/nuxt) so it could work seamlessly with Nuxt.

    opened by mrleblanc101 6
  • Plan to support Vite (Vue 3) or Webpack 5 ?

    Plan to support Vite (Vue 3) or Webpack 5 ?

    Hi, Any plan to support Vue 3 and Vite ? I know you recommend using vue-svg-inline-plugin in the README, but that package is quite different. With the recommended package, I have to import the SVG in the <script>, define it as a component in the option API or use defineComponent in setup and then use it as a Vue component in the <template>. I liked this plugin because it still used plain <img /> tag instead of Vue component, and I could use the SVG directly instead of have to do 2 prior step every time (import, define component).

    opened by mrleblanc101 7
  • Moderate security vulnerability - Inefficient Regular Expression Complexity in nth-check

    Moderate security vulnerability - Inefficient Regular Expression Complexity in nth-check

    Hi!

    I receive this notification when I ran npm audit.

    npm audit
    # npm audit report
    
    nth-check  <2.0.1
    Severity: moderate
    Inefficient Regular Expression Complexity in nth-check - https://github.com/advisories/GHSA-rp65-9cf3-cjxr
    No fix available
    node_modules/vue-svg-inline-loader/node_modules/nth-check
      css-select  <=3.1.0
      Depends on vulnerable versions of nth-check
      node_modules/vue-svg-inline-loader/node_modules/css-select
        svgo  1.0.0 - 1.3.2
        Depends on vulnerable versions of css-select
        node_modules/vue-svg-inline-loader/node_modules/svgo
          vue-svg-inline-loader  *
          Depends on vulnerable versions of svgo
          node_modules/vue-svg-inline-loader
    
    4 moderate severity vulnerabilities
    

    Can you please update the svgo version this package is using?

    Thanks!

    opened by ilyen85 4
  • Not working when Vue binding is used on src attribute of image tag.

    Not working when Vue binding is used on src attribute of image tag.

    opened by oliverfindl 0
Owner
Oliver Findl
Oliver Findl
A simple Vue component that creates an SVG-powered triangle. Combine them to create interesting content separators!

vue-triangle-separator Quickly add full-bleed SVG-powered triangle separators to your page.

HoldTheLine 3 Dec 28, 2021
Vue image placeholder directive for broken images.

Vue Image Fallback v-img-fallback Vue image placeholder directive for broken images. If you like this project, please give it a star, and consider fol

Joff Tiquez 46 Oct 13, 2022
Image comparison slider. Compare images before and after. Supports React, Vue, Angular.

Image comparison slider. Compare images before and after. Supports React, Vue, Angular.

Dmitry Snisarenko 267 Dec 18, 2022
A vue component that allows your images to open in full size.

vue-expandable-image Allows your images to open in full size. Demo Preview Setup npm install vue-expandable-image You have two ways to setup vue-expa

Taha Shashtari 28 Oct 16, 2022
An interactive vue component that displays multiple images in a row

vue image wall An interactive vue component that displays multiple images in a row. By hovering mouse over one of the images, that image will expand i

Zijie Wu 18 Jun 21, 2022
V-img is a plugin for Vue.js that allows you to show images in full-screen gallery

V-img is a plugin for Vue.js that allows you to show images in full-screen gallery

Chantouch 0 Dec 2, 2019
Optimized Images for Nuxt

Optimized Images for Nuxt

Nuxt 808 Jan 5, 2023
Collecting images and photos like a pro.

Scrapbook Collecting images and photos like a pro. Demo demo Why When you have a tons of photos you took while your traveling, or art images you downl

Fumiya A 5 Jan 31, 2022
An image finder application leveraging the Pexels api, You can also download your favorite Images too

Pexelry ?? Pexelry is an image finder web application that leverages the Pexels api to find images related to a specific search. Prerequisites Get an

Junior Developer 4 Aug 25, 2022
image-diff client: client web application to compare multiple images. online demo -

image-diff client web application to compare multiple images. you can pan, zoom and diff multiple images at the same time. currently support 8bit jpg,

Junik Jo 5 Mar 29, 2022
A Vue component for showing loader during image loading https://john015.github.io/vue-load-image/

English | 한국어 Vue-load-image Vue-load-image is 1KB(gzipped size) minimalist Vue component that display loader during image loading and display alterna

Sangwon Lee 60 Dec 7, 2022
Vue progressive image loader plugin like Medium

vue-image-loader Vue progressive image loading plugin Article here : https://www.kevindesousa.me/vue-image-loader/ Installation $ npm install @kevinde

Kevin De Sousa 57 Jul 19, 2022
Vue component that provides content scrolling and zooming using mouse events or two fingers pinch on a mobile devices

Vue component that provides content scrolling and zooming using mouse events or two fingers pinch on a mobile devices

CoddiCat 24 Sep 9, 2022
A Vue version of an excellent peity library for beautiful mini svg graphs.

Peity A Vue version of an excellent peity library for beautiful mini graphs.

null 65 Dec 22, 2022
A Vue.js port of Boring Avatars, a JS library that generates custom, SVG-based, round avatars from any username and color palette.

A Vue.js port of Boring Avatars, a JS library that generates custom, SVG-based, round avatars from any username and color palette.

Mujahid Anuar 84 Dec 19, 2022
Encode svg in url, use in html Img, Css and more...

Encode svg in url, use in html Img, Css and more...

Web Colmeia 3 Nov 11, 2022
A Vue.js (https://github.com/vuejs/vue) plugin that offers a reusable directive to get image from Cloudinary (https://cloudinary.com)

vue-cloudinary A Vue.js plugin that offers a reusable directive to get image from cloudinary Overview This is a port of the angular-cloudinary library

Diego Pamio 25 Dec 5, 2020
Vue-cool-lightbox is a pretty Vue.js lightbox component, inspired by fancybox with zoom, swipe, captions and videos supported

Vue-cool-lightbox is a pretty Vue.js lightbox component, inspired by fancybox with zoom, swipe, captions and videos supported.

Lucas Pulliese 327 Jan 1, 2023
A photo gallery app using Vue.js + Vue Router + Vuex

Vue Photogram App A photo gallery app using Vue.js + Vue Router + Vuex Features: Using Pixabay Api Home, category, tag and single photo page Infinite

Emre Güney 7 Dec 12, 2022