npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

eyeglass-inline-svg

v0.3.1

Published

Sass eyeglass module for inlining SVG files.

Downloads

865

Readme

eyeglass-inline-svg

Now you can finally inline SVG files with libsass, too!

david

NPM

Installation

npm install --save-dev eyeglass-inline-svg

Usage

@import 'inline-svg';

.test {
  background: inline-svg-file("./assets/svg/opt/test.svg") center no-repeat;
}

Using a variable is suitable for including the SVG background in a CSS3 multiple background, though extending (see below) is not possible in the particular selector then.

Using an inlined SVG multiple times

@import 'inline-svg';

$svg-text: inline-svg-file("./assets/svg/opt/test.svg");
@mixin svg-test {
  background: $svg-test center no-repeat;
}
%svg-test {
  @include svg-test;
}
// [...]
.test1 {
  @extend %svg-test;
}
// [...]
.test2 {
  @extend %svg-test;
}
// [...]

When the inlined background should be reused multiple times, using an extend can be more efficient.

The mixin has to be used when overriding properties - as extends cannot do this (style order dependent).

Arguments

inline-svg-file

Takes the path to a SVG file and inlines it.

path

Path to the SVG file.

encoding

Encoding of the file. Defaults to utf8.

inline-svg

Takes the string of a SVG document and inlines it.

str

The SVG string to be inlined.

Rationale

This eyeglass module actually provides two functions, one for inlining a SVG string and one for inlining a SVG file. The reason behind this is that one may want first to manipulate the SVG string to be inlined, e.g. for modifications that aren't possible with SVG used as background image, like CSS fill/stroke properties or modifications that aren't possible with CSS at all. For this the SVG string is first fetched using file-text function (provided by eyeglass-file-text), passed to a SVG manipulation function and then finally passed to the inline-svg function of this eyeglass module.

Optimization + Troubleshooting

The same as with the underlying eyeglass-inline-urlescape module applies: Optimization of the input SVGs must be performed by a separate, specialized tool (e.g. svgo) and/or in an extra build step (e.g. using gulp-svgmin) prior compiling the sass files.

Please note that automated SVG optimization may break a SVG or make it unrenderable in some browsers, so in case of trouble with the inlined SVG, first check the optimized input SVG by viewing it directly as file in browser.

Misc

If you only want/need the escaped URL string without the rest of the data URI, use the inline-urlescape function provided by the underlying eyeglass-inline-urlescape module.