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

github-repos-astro-loader

v1.2.0

Published

An Astro loader to fetch GitHub repositories for use as content in Astro websites

Downloads

363

Readme

GitHub Repositories Astro Loader

This is a content loader for Astro that fetches GitHub repositories and their README files, so you can list them easily in your Astro site.

See a demo on my website

Usage

In your src/content/config.ts file, add a new collection and use the loader:

import githubReposLoader from 'github-repos-astro-loader'
const project = defineCollection({
  loader: githubReposLoader({
    // Required
    apiToken: GITHUB_TOKEN, // GitHub API token to use for requests
    username: 'myusername', // The GitHub username you want to fetch the repositories for

    // Optional
    orgs: ['myorg'], // A list of GitHub orgs to fetch repositories from
    debug: true, // Output debug logs during processing
    force: false, // Ignore cache and force a full re-fetch
    overridesDir: 'src/content/project-overrides', // Directory to look for overrides
    filter: (repo) => // Filter repositories to include in the collection
      [
        !repo.fork,
        repo.stargazers_count! > 0,
        //
      ].every(Boolean),
    }),
  }),
})

Then you can use your new collection as you normally would in Astro:

---
import { getCollection } from 'astro:content'
const projects = await getCollection('project')
---

<div>
  <h3>My GitHub Projects</h3>
  <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
    {projects.map((project) => <ProjectCard project={project} />)}
  </div>
</div>

Overrides

You might want to add, or modify data for a project. To keep this easy to maintain, and to allow markdown parsing, you can create a my_project.md file inside your overridesDir.

The default directory is src/content/project-overrides.

Just create an md file with all the related fields you want to override. Insert the readme Markdown content under the properties.

These fields are editable:

  • title
  • description
  • order
  • featured

Example file: src/content/project-overrides/my_project.md

---
title: My Project # instead of my_project
featured: true
---

This is the README content for my project. Hooray!

Contributing

I am developing this package on my free time, so any support, whether code, issues, or just stars is very helpful to sustaining its life. If you are feeling incredibly generous and would like to donate just a small amount to help sustain this project, I would be very very thankful!

I welcome any issues or pull requests on GitHub. If you find a bug, or would like a new feature, don't hesitate to open an appropriate issue and I will do my best to reply promptly.