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

@chadfawcett/probot-serverless-now

v2.0.0

Published

A Probot extension to make it easier to run your Probot Apps on Zeit Now v2

Downloads

17

Readme

npm Version Build Status

Zeit Now v2 Extension for Probot

A Probot extenstion to make it easier to run your Probot Apps on Zeit Now v2

Zeit Now v2 changes its functionality from long-running processes to functions. This means v2 deployments can't start probot run, and instead need direct access to the App's endpoint.

Usage

$ npm install @chadfawcett/probot-serverless-now
//  now.js
var { serverless } = require('@chadfawcett/probot-serverless-now')
const appFn = require('./')
module.exports = serverless(appFn)
//  index.js
module.exports = app => {
  app.on('issues.opened', async context => {
    // A new issue was opened, what should we do with it?
    context.log(context.payload)
  })
}
// now.json
{
  "version": 2,
  "env": {
    "APP_ID": "@app-id",
    "WEBHOOK_SECRET": "@webhook-secret",
    "PRIVATE_KEY": "@private-key-base64-encoded"
  },
  "builds": [{ "src": "now.js", "use": "@now/node" }],
  "routes": [{ "src": "/", "dest": "/now.js" }]
}
$ now # Deploy using now!

Using Routes

Zeit Now encourages multiple granular endpoints instead of one monolithic app, so whenever possible you should separate custom routing. That being said, there may be cases for wanting to have custom routes inside of your app using app.route(). To enable this, simply change the src path in your now.json to have a wildcard ending ("src": "/*").

{
  ...
  "routes": [{ "src": "/*", "dest": "/now.js" }]
}

Multiple Apps

As mentioned in using routes, monolithic apps are discouraged. That being said, there may be a use case for running multiple Probot Apps together (ie logging, stats, etc). For this reason the serverless function also accepts an array of app functions.

var { serverless } = require('@chadfawcett/probot-serverless-now')
const statsApp = require('probot/lib/apps/stats')
const myApp = require('./')

module.exports = serverless([statsApp, myApp])

API

serverless(appFn[, options])

Create a new instance of Probot and load the supplied App[s].

Parameters

Name | Type | Required | Description --- | --- | --- | --- appFn | function | array | true | Single or array of of Probot App functions options | object | false | Probot config options

Options

Name | Type | Default | Description --- | --- | --- | --- id | number | process.env.APP_ID | The App ID assigned to your GitHub App secret | string | process.env.WEBHOOK_SECRET | The webhook secret used when creating a GitHub App cert | string | findPrivateKey() | The contents of the GitHub App private key (multiline or base64)

Example

With default options

var { serverless } = require('@chadfawcett/probot-serverless-now')
const appFn = require('./')
module.exports = serverless(appFn)

With custom options

var { serverless } = require('@chadfawcett/probot-serverless-now')
const appFn = require('./')

const options = {
  id: 123,
  secret: process.env.MY_SECRET,
  cert: process.env.MY_PRIVATE_KEY
}

module.exports = serverless(appFn, options)

Install

With npm installed, run

$ npm install @chadfawcett/probot-serverless-now

This package is meant to be installed alongside your Probot app, so probot is a peer dependency.

Acknowledgments

@chadfawcett/probot-serverless-now was inspired by probot/serverless-lambda

See Also

License

MIT Copyright Chad Fawcett