UNPKG

sponsorkit

Version:

Toolkit for generating sponsors images

231 lines (186 loc) 4.78 kB
# SponsorKit [![NPM version](https://img.shields.io/npm/v/sponsorkit?color=a1b858&label=)](https://www.npmjs.com/package/sponsorkit) Toolkit for fetching sponsors info and generating sponsors images. Supports: - [**GitHub Sponsors**](https://github.com/sponsors) - [**Patreon**](https://www.patreon.com/) - [**OpenCollective**](https://opencollective.com/) - [**Afdian**](https://afdian.com/) - [**Polar**](https://polar.sh/) - [**Liberapay**](https://liberapay.com/) ## Usage Create `.env` file with: ```ini ; GitHub provider. ; Token requires the `read:user` and `read:org` scopes. SPONSORKIT_GITHUB_TOKEN= SPONSORKIT_GITHUB_LOGIN= ; Patreon provider. ; Create v2 API key at https://www.patreon.com/portal/registration/register-clients ; and use the "Creator’s Access Token". SPONSORKIT_PATREON_TOKEN= ; OpenCollective provider. ; Create an API key at https://opencollective.com/applications SPONSORKIT_OPENCOLLECTIVE_KEY= ; and provide the ID, slug or GitHub handle of your account. SPONSORKIT_OPENCOLLECTIVE_ID= ; or SPONSORKIT_OPENCOLLECTIVE_SLUG= ; or SPONSORKIT_OPENCOLLECTIVE_GH_HANDLE= ; If it is a personal account, set it to `person`. Otherwise not set or set to `collective` SPONSORKIT_OPENCOLLECTIVE_TYPE= ; Afdian provider. ; Get user_id at https://afdian.com/dashboard/dev SPONSORKIT_AFDIAN_USER_ID= ; Create token at https://afdian.com/dashboard/dev SPONSORKIT_AFDIAN_TOKEN= ; Polar provider. ; Get your token at https://polar.sh/settings SPONSORKIT_POLAR_TOKEN= ; The name of the organization to fetch sponsorships from. SPONSORKIT_POLAR_ORGANIZATION= ; Liberapay provider. ; The name of the profile. SPONSORKIT_LIBERAPAY_LOGIN= ``` > Only one provider is required to be configured. Run: ```base npx sponsorkit ``` [Example Setup](./example/) | [GitHub Actions Setup](https://github.com/antfu/static/blob/master/.github/workflows/scheduler.yml) | [Generated SVG](https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg) ### Configurations Create `sponsorkit.config.js` file with: ```ts import { defineConfig, tierPresets } from 'sponsorkit' export default defineConfig({ // Providers configs github: { login: 'antfu', type: 'user', }, opencollective: { // ... }, patreon: { // ... }, afdian: { // ... }, polar: { // ... }, liberapay: { // ... }, // Rendering configs width: 800, renderer: 'tiers', // or 'circles' formats: ['json', 'svg', 'png', 'webp'], tiers: [ // Past sponsors, currently only supports GitHub { title: 'Past Sponsors', monthlyDollars: -1, preset: tierPresets.xs, }, // Default tier { title: 'Backers', preset: tierPresets.base, }, { title: 'Sponsors', monthlyDollars: 10, preset: tierPresets.medium, }, { title: 'Silver Sponsors', monthlyDollars: 50, preset: tierPresets.large, }, { title: 'Gold Sponsors', monthlyDollars: 100, preset: tierPresets.xl, }, ], }) ``` Also check [the example](./example/). ### Programmatic Utilities You can also use SponsorKit programmatically: ```ts import { fetchSponsors } from 'sponsorkit' const sponsors = await fetchSponsors({ github: { token, login, }, // ... }) ``` Check the type definition or source code for more utils available. ### Renderers We provide two renderers built-in: - `tiers`: Render sponsors in tiers. - `circles`: Render sponsors in packed circles. #### Tiers Renderer ```ts export default defineConfig({ renderer: 'tiers', // ... }) ``` <p align="center"> <a href="https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg"> <img src='https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg'/> </a> </p> #### Circles Renderer ```ts export default defineConfig({ renderer: 'circles', // ... }) ``` <p align="center"> <a href="https://cdn.jsdelivr.net/gh/antfu/static/sponsors.circles.svg"> <img src='https://cdn.jsdelivr.net/gh/antfu/static/sponsors.circles.svg'/> </a> </p> ### Multiple Renders We also support rendering multiple images at once with different configurations, via `renders` field: ```ts import { defineConfig, tierPresets } from 'sponsorkit' export default defineConfig({ // Providers configs github: { /* ... */ }, // Default configs width: 800, tiers: [ /* ... */ ], // Define multiple renders, each will inherit the top-level configs renders: [ { name: 'sponsors.tiers', formats: ['svg'], }, { name: 'sponsors.wide', width: 1200, }, { name: 'sponsors.circles', renderer: 'circles', width: 600, }, // ... ], }) ``` ## License [MIT](./LICENSE) License © 2022 [Anthony Fu](https://github.com/antfu)