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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@peterseibel/hug

v0.1.10

Published

A wrapper around clasp for managing Google Apps Script projects

Readme

hug

A wrapper around clasp for managing Google Apps Script projects.

Install

npm install -g @peterseibel/hug

Or clone this repo and link it:

git clone https://github.com/gigamonkey/hug.git && cd hug
npm install && npm link

Already using clasp?

Just use hug in your existing project. There's nothing special about a hug project — any clasp project works out of the box.

Prerequisites

You need to be logged in to clasp:

npx clasp login

Commands

Create a new project

hug init my-app                         # blank project
hug init --template webapp my-app       # webapp with doGet + index.html

This creates the directory, copies template files, installs clasp, and creates the Apps Script project.

Import an existing project

hug init --scriptId <scriptId> my-project

Imports an existing Apps Script project into a new directory and sets up npm/clasp.

Fork a project

hug fork

Creates a new Apps Script project from the current local code. Useful with git branches — fork on a branch to get a separate Apps Script project you can develop against independently. If you're using hug config to manage resources like spreadsheet IDs, you'll probably want to update them after forking so the new project points at its own resources.

Configure

hug config                          # list config values
hug config set SPREADSHEET_ID=1Bx.. # set a value
hug config set FOO=bar BAZ=qux      # set multiple values
hug config unset FOO                # remove a value

Manages a config.js file that gets pushed with your code. Apps Script code can access values via CONFIG.SPREADSHEET_ID, etc. Useful for pointing different branches/forks at different resources.

Note: config values are stored in source. Don't put secrets here.

Push / Pull / Open

hug push          # push local files to Apps Script
hug pull          # pull remote files (refuses if uncommitted changes)
hug pull -f       # pull even with uncommitted changes
hug open          # open in the Apps Script editor

Deploy

hug deploy "description of changes"

Pushes code, creates a version, and updates the existing deployment (or creates one if none exists).

Roll back

hug deploy --rollback <versionNumber>

List versions and deployments

hug versions
hug deployments

Templates

  • blank — minimal appsscript.json + empty Code.js
  • webappdoGet() serving an index.html, with webapp config in the manifest

Branch-per-environment pattern

Use hug fork and hug config combined with git branches to maintain separate Apps Script projects. Write code to use config values (e.g. using SPREADSHEET_ID to a spreadsheet the script should use) rather than using container-bound projects and then different branches can use different AppScript projects each configured with separate resources as needed. And shared resources can be shared by simply using the same config values.

git switch -c staging
hug fork                              # new Apps Script project, updates .clasp.json
hug config set SPREADSHEET_ID=1Bx..   # point at a staging spreadsheet
hug deploy                            # deploys to the staging project
git commit                            # Commit work in branch.
git switch main                       # .clasp.json and config.js switch back to production