SVG hex.pm hexdocs.pm

Tools for caching and serving SVGs for Phoenix.

Installation

Add to your mix.exs as usual:

def deps do
  [{:svg, "~> 1.0.0"}]
end

If you’re not using application inference, then add :svg to your applications list.

Then configure it in your config.exs:

config :svg, otp_app: :my_app # Replace :my_app

Using base64 encoded SVGs at runtime

Run the background server:

defmodule YourApp do
  use Application

  def start(_type, _args) do
    import Supervisor.Spec

    children = [
      # .. Ecto, Repo, etc.

      worker(SVG.Server, [])
    ]

    # ...
  end
end

The server will build up cache when the main application starts. It will concurrently read all svgs in your priv/static/images folder and cache them in memory. You can then use the base64 encoded svgs like so:

<img src="<%=raw SVG.Server.get("icons/add") %>">

Where icons/add corresponds to priv/static/images/icons/add.svg on the filesystem. You may want to alias the server when using in templates:

alias SVG.Server, as: SVG

and then you can use SVG.get/1 directly.

Utility functions

See docs for functions available on the main SVG module.

About

This project is sponsored by Heresy. We’re always looking for great engineers to join our team, so if you love Elixir, open source and enjoy some challenge, drop us a line and say hello!

License

  • svg: See LICENSE file.
  • “Heresy” name and logo: Copyright © 2017 Heresy Software Ltd