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

@form8ion/github

v2.0.0

Published

form8ion plugin for projects using GitHub as host for their git repository

Downloads

3,403

Readme

github

form8ion plugin for projects using GitHub as host for their git repository

Node CI Workflow Status Codecov SLSA Level 2

Table of Contents

Features

Creation of GitHub repository

When authentication is provided, a repository will be created on GitHub, assuming one does not already exist.

Configuration of GitHub Repository Settings

This plugin configures repository settings by generating the settings file for use by repository-settings/app. The settings in the file will be applied, along with those in the account-level file, once the generated file is pushed to GitHub in the default branch, assuming you have the repository-settings app installed for your account.

Usage

MIT license npm Try @form8ion/github on RunKit node

Installation

$ npm install @form8ion/github --save-prod

Enabling actions against the GitHub API

This plugin leverages the .netrc strategy for octokit. Be sure to add your personal access token to leverage the GitHub API integration benefits of this plugin.

Enabling repository configuration with repository-settings/app

  • Be sure to install for the user or organization account that you are scaffolding the new project for.
  • Enable the settings app for all repositories in the account

Account-level settings

The settings file generated by this tool assumes that it is extending an account level config

Example

Import

import any from '@travi/any';
import {lift, promptConstants, scaffold, test} from '@form8ion/github';

Execute

const projectRoot = process.cwd();

await scaffold(
  {
    projectRoot,
    projectName: 'foo',
    visibility: any.fromList(['Public', 'Private']),
    description: any.sentence()
  },
  {
    prompt: async ({id}) => {
      const {questionNames, ids} = promptConstants;
      const expectedPromptId = ids.GITHUB_DETAILS;

      if (expectedPromptId === id) {
        return {[questionNames[expectedPromptId].GITHUB_ACCOUNT]: any.word()};
      }

      throw new Error(`Unknown prompt with ID: ${id}`);
    }
  }
);

if (await test({projectRoot})) {
  await lift({
    projectRoot,
    vcs: {owner: 'account-name', name: 'repository-name'},
    results: {
      projectDetails: {homepage: any.url()},
      tags: any.listOf(any.word),
      nextSteps: any.listOf(() => ({summary: any.sentence(), description: any.sentence()}))
    }
  });
}

Contributing

Commitizen friendly Conventional Commits semantic-release: angular Renovate PRs Welcome

Dependencies

$ nvm install
$ npm install

Verification

$ npm test