@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/hugOr clone this repo and link it:
git clone https://github.com/gigamonkey/hug.git && cd hug
npm install && npm linkAlready 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 loginCommands
Create a new project
hug init my-app # blank project
hug init --template webapp my-app # webapp with doGet + index.htmlThis creates the directory, copies template files, installs clasp, and creates the Apps Script project.
Import an existing project
hug init --scriptId <scriptId> my-projectImports an existing Apps Script project into a new directory and sets up npm/clasp.
Fork a project
hug forkCreates 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 valueManages 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 editorDeploy
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 deploymentsTemplates
- blank — minimal
appsscript.json+ emptyCode.js - webapp —
doGet()serving anindex.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