Web function to generate PNGs from SVGs. Based on convert-svg-to-png which uses headless Chromium.
The proxy accepts a request for e.g. https://raster.example.com/example.png
and translates it to a request for
https://other-server.example.com/example.svg
. If the path doesn't contain
.png
, it passes is unchanged, e.g. https://raster.example.com/example
to
https://other-server.example.com/example
.
The query string is also forwarded upstream. Cache headers are forwarded downstream.
The host comes from the BASE_URL
environment variable.
Designed for Shields though may be useful for other application as well.
- The code is is one file.
- It's based on the Micro framework.
- Rasterization uses headless Chromium via Puppeteer, wrapped in the convert-svg-to-png library.
- The service has no state. It simply fetches corresponding SVG badges from the upstream service, rasterizes them, and forwards cache headers along with the response.
- Caching the rasterized badges is handled by a downstream CDN.
Runs on Zeit Now.
Staging: https://shields-raster-staging.now.sh/
Production: https://raster.shields.io/
raster.shields.io
hosting is provided by:
Pull requests are deployed automatically. Staging is deployed automatically from master. Production is deployed manually for now.
For information about current deploys, see the Now dashboard. See production hosting for a list of maintainers with access.
raster.shields.io
is configured in the Shields Cloudflare as a CNAME for
alias.zeit.co
with traffic configured not to pass through Cloudflare. That's
because it's cached by Now's Smart CDN instead.
To deploy, run now alias shields-raster-staging.now.sh raster.shields.io
.
This ships the current staging build to production.
To setup your environment to run now
, you'll need to install the CLI, login, and switch to the Shields team.
npm i -g now
now login
now teams switch shields1
If you're having problems with the service, you can post questions in the
#support
room in Discord and the main Shields repo.
If you use and love Shields, we ask that you make a one-time $10 donation to Shields. You can also contribute monthly or sponsor at a higher level.
Contributions welcome! Feel free to open discussions on the main Shields repo and to open pull requests here.
The #contributing
room in Discord is also a good place to discuss and ask
questions.
This project is licensed under the MIT license.