Skip to content

Twemojis as a plug-and-play module for Hugo sites 📦

License

Notifications You must be signed in to change notification settings

jakejarvis/hugo-mod-twemoji

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hugo-mod-twemoji 📦 CI

Twemoji (Twitter Emoji) is an open-source library of every Unicode emoji (all 3,500+ of them!) uniquely redesigned in both SVG and PNG formats. It also provides a script to swap out system-native emojis for these graphics to achieve a uniform appearance across all browsers and platforms. 🙌

This Hugo Module can be used to import the Twemoji graphics and scripts locally into your Hugo project, rather than making external calls to Twitter's CDN for each individual icon.

🤖 Usage

Give the Hugo Modules documentation a read to prepare your project, and then add this module to your Hugo project's config.toml:

[module]
[[module.imports]]
  path = "github.com/jakejarvis/hugo-mod-twemoji"

The graphics will be mounted in static/twemoji/svg and static/twemoji/png, and the minified script in static/twemoji/js.

Before you start, you'll probably want to add Twitter's recommended CSS to your stylesheet to make sure the Twemojis match the size and alignment of the surrounding text — otherwise they'll be humongous:

img.emoji {
  height: 1em;
  width: 1em;
  margin: 0 .05em 0 .1em;
  vertical-align: -0.1em;
}

⚡ Quick Start

For a quick start, an optional partial template is mounted at layouts/partials/twemoji.html, which does everything described in the section below for you. Include this somewhere near the bottom of your base template, before </body>:

{{ partial "twemoji" . }}

⚙️ Manual

If you don't use the partial, you'll want to call the js/twemoji.min.js asset as a resource somewhere in your template or theme's <head>, for example:

{{ $twemoji := resources.Get "js/twemoji.min.js" }}
<script src="{{ $twemoji.Permalink }}"></script>

...and then in order to actually swap out the emojis, you need to call the script's twemoji.parse method. This is where you can choose between SVGs (recommended) or 72x72 PNGs and tell the script where we've placed the graphics. The official readme has a lot of information about the API, but a good starting point is this one-liner:

<script>
  twemoji.parse(document.body, {{ dict "base" ("twemoji/" | absURL) "folder" "svg" "ext" ".svg" | jsonify | safeJS }})
</script>

Simply change svg and .svg to png and .png respectively to use the provided 72x72 PNG icons instead.

After building the site this small script will turn into something like:

<script>
  twemoji.parse(document.body, {"base": "https://hugo-mod-twemoji.netlify.com/twemoji/", "ext": ".svg", "folder": "svg"})
</script>

🌎 Examples

📜 Licenses

Twemoji graphics are licensed under Creative Commons Attribution 4.0 International (CC-BY-4.0) by Twitter, Inc. and other contributors. Code (both Twitter's and this repository) is released under the MIT License.

Refer to the main Twemoji repository or website for more information.