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

ci-pilot

v1.9.1

Published

Automate your CI pipeline with ease - you'll find binaries and functions that help you simplify the process

Downloads

292

Readme

Overview

CI Pilot aims to provide direction and guidance towards setting up the ideal software delivery pipeline as well as fully automating it.

Production releases

There are plenty of incredible players on the market that aid in production release management and publishing, and CI Pilot doesn't aim to compete with them, rather to bridge the gap and standardise their use in coordination with your Git methodology (focusing on GitHubFlow and GitFlow).

Pre-production releases

Looking at the most well used release management tools (semantic-release, standard-version, etc.), there's a clear lack of in-depth focus on how to go about producing internal packages during the development life-cycle, pre-production. CI Pilot steps in with out of the box support for the following:

  1. Feature/Bug-Fix/Hot-Fix branch alpha releases, Git tagging the branch and publishing a package
  2. For GitFlow adopters, Alpha releases, Git tagging the development branch and publishing a package

Getting started

Install

npm:

npm i --save-dev ci-pilot

Yarn:

yarn add -D ci-pilot

Commands

Supported commands:

  1. publish
  2. release-gh-gf
  3. helper

Publish

ci-pilot publish [stage]

Publish a feature branch

ci-pilot publish feature

Release GitHub-GitFlow

ci-pilot release-gh-fg [step]

Cut a new release

ci-pilot release-gh-gf cut

Stage a release via a Git tag

ci-pilot release-gh-gf stage

Finish a release

ci-pilot release-gh-gf finish

Additional command-line flags:

  • --auto-bump-change-log or -a: This flag when specified will use standard-version under the hood to generate the next release version based on the Conventional Commits preset chosen, bump the package.json version, generate or update the change log, and Git tag the commit with the version.
  • --merge-msg-skip-ci or -m: This flag will suffix GitFlow merge commits with [skip ci], a common convention used to avoid additional jobs being triggered in your CI pipeline.

Scrap a release

ci-pilot release-gh-gf scrap

Helper

ci-pilot helper [helper]

Cut a new release

ci-pilot helper package-name

Stage a release via a Git tag

ci-pilot helper is-repo-gitflow

Configure

Create a file called ci-pilot.config.json in the root of the repository, and populate it with the following:

Default (fully expanded):

{
  "packageManager": "npm",
  "gitMethodology": "...",
  "branchNames": {
    "base": "master",
    "feature": "feature",
    "hotfix": "hotfix",
    "development": "develop",
    "bugfix": "bugfix"
  },
  "release": {
    "preset": "angular",
    "tagPrefix": "v"
  },
  "gitBranchSeparator": "/",
  "tagSeparator": "#"
}

Alternate example:

{
  "gitMethodology": "...",
  "branchNames": {
    "base": "main",
    "feature": "topic",
  "gitBranchSeparator": "-",
  "tagSeparator": "$"
}

Configuration Options:

  • packageManager: Options, npm or yarn, defaults to npm
  • gitMethodology: Mandatory, GitFlow or GitHubFlow
  • branchNames.base: Optional, defaults to master
  • branchNames.feature: Optional, defaults to feature
  • branchNames.hotfix: Optional, defaults to hotfix
  • branchNames.development: Optional, defaults to develop
  • branchNames.bugfix: Optional, defaults to bugfix
  • release.preset: Optional, defaults to angular
  • release.tagPrefix: Optional, defaults to v
  • gitBranchSeparator: Options: / | -, defaults to /
  • tagSeparator: Options: # | £ | $, defaults to #

Note: CI Pilot uses your package manager of choice under the hood, npm or yarn. Ensuring that your CI pipeline is configured correctly for npm or yarn remains your responsibility and is out of scope for CI Pilot.

Ethos

We have different recommendations on how to use CI Pilot based on the progress of the code change through your software release pipeline - see details below.

Developing features

Publish your feature package

Publish packages on features you're developing by adding the following command as a step in your CI pipeline:

ci-pilot publish feature

Note: We don't recommend committing feature branch versions bumps to Git, as the pre-release alpha versions would eventually be merged into base or development branches which is wrong. Instead we believe that Git tags are sufficient to mark the origin of built packages that are uploaded to your package registries.

Our strategy:

  1. Version the package(s) in the repository locally
  2. Publish the packages (containing the package.json file for built assets contain the alpha feature version)
  3. Wipe away the version changes in the Git working tree

If you're working in a mono-repo then the above command will detect that and by default publish all workspace packages. If you wish to only publish only one of the packages in the mono-repo then you should include the --package-only flag otherwise the command will fail, as it's not our recommendation.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!

License

MIT