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

@financial-times/g-deploy

v4.0.1

Published

CLI for deploying FT Graphics projects

Downloads

707

Readme

g-deploy Build Status npm

CLI for deploying built static websites to an S3 bucket.

How to use

Requires Node 8 or higher.

To install:

$ npm i @financial-times/g-deploy

Command line usage

$ g-deploy --help
CLI for deploying FT Graphics projects

  > g-deploy [FLAGS...] <dir>

  <dir> - Path to the directory you want to upload (default: ./dist/client)

  Settings Presets
  These provide default values for bucket, project, branch, etc
    --preview - For deploying to our okta-protected preview environment
        expands to: --bucket djd-ig-preview --url-base preview
    --live - To make pages available in ig-router
        expands to: --bucket djd-ig-live --url-base v3 --branch HEAD --tag HEAD --write-versions-json

  ────────────────────────────────────────────────────────────────────
  The remaining flags are optional when this command is run from a typical FT
  Graphics project repo in CI.
  ────────────────────────────────────────────────────────────────────

  AWS settings
  Authentication should follow the standard AWS env vars or profile
    --bucket - S3 bucket to upload to, defaults to BUCKET_NAME env
    --public-read - Whether to apply a public-read ACL to the files uploaded
    --aws-region - AWS region the bucket lives in, defaults to AWS_REGION env or 'eu-west-1'

  Upload settings
  If not provided, these are deduced from the git status in the CWD.
    --project - Name of the project, defaults to current git repo (e.g. ft-interactive/some-story)
    --branch - Name of the branch you are deploying, defaults to current in git
    --tag - Tagged version to deploy
    --url-base - First component of the URL to upload to, defaults to 'v2'

  Other
    --help - show this help and exit
    --get-branch-url - instead of deploying, just print the URL it would deploy to
    --get-tag-url - as above, but get the tag-specific URL
    --confirm - skip the confirmation dialogue when deploying
    --write-versions-json - write a VERSIONS.json file at the project base containing every version number

JavaScript API

The most straightforward way:

import deploy from "@financial-times/g-deploy";

deploy(options).then((baseURLs) => {
  console.log("uploaded to:", baseURLs);
});

For more fine-grained control:

import { Deployer } from "@financial-times/g-deploy";

const deployer = new Deployer(options);

deployer.execute().then((baseURLs) => {
  console.log("uploaded to:", baseURLs);
});

The JavaScript API does not do any git-sniffing or use any environment variables to configure the deployment – you must pass in all required options manually. See the Deployer class source for the full options.

Development

Clone this repo and run yarn to install dependencies.

Run yarn build -- --watch and yarn test -- --watch in separate terminal tabs while developing. (The first one watches src and builds to dist. The second one runs ava tests in dist.)

Publishing to NPM

After you merge a pull request with a new feature, you should deploy it to NPM. To do so:

  1. Make sure you're on main: git checkout main
  2. Run npm version [major|minor|patch] to increment the version based on the type of changes in this release. We use Semantic Versioning to increment versions:
  • Breaking (non-backwards-compatible) changes should be a major release
  • New features (that are backwards-compatible) should be minor
  • Bug fixes should be a patch
  • Alternatively, you can use npm version vX.X.X to set the version yourself.
  1. Run git push --follow-tags to push the new version to GitHub, which will trigger the CircleCI pipeline that publishes the new version on NPM.

Pre-release ("canary") versions

If you'd like to release a pre-release version (e.g. to test or gradually roll out a new feature), you can create a new version like npm version v1.0.0-canary.0. The version number should represent the ultimate release this change will land in, while the final 0 can be incremented to make subsequent prerelease builds.

NPM can also generate this automatically for you, with npm version pre[major|minor|patch] --preid canary.