@patternfly/patternfly-cli
v1.2.8
Published
Patternfly cli for scaffolding projects, performing code mods, and running project related tasks
Maintainers
Keywords
Readme
Patternfly CLI
Patternfly CLI is a command-line tool designed for scaffolding projects, performing code modifications, and running project-related tasks. It aims to streamline development workflows and improve productivity.
Features
- Project Scaffolding: Quickly set up new projects with predefined templates.
- Code Modifications: Automate repetitive code changes.
- Task Runner: Execute project-related tasks efficiently.
Installation
Install script (macOS and Linux)
You can pipe the repository install script into bash. It installs Node.js with nvm when node is not available, enables Corepack, installs the GitHub CLI when it is missing, then installs the CLI globally from npm:
curl -fsSL https://raw.githubusercontent.com/patternfly/patternfly-cli/main/scripts/install.sh | bashSwap main for another branch or tag if you need a specific revision. To save the script and inspect it before running:
curl -fsSL https://raw.githubusercontent.com/patternfly/patternfly-cli/main/scripts/install.sh -o install-patternfly-cli.sh
bash install-patternfly-cli.shThe script may prompt for sudo when your system package manager installs GitHub CLI.
npm
If you already have the prerequisites on your machine, install the published package globally:
npm install -g @patternfly/patternfly-cliUninstall
Uninstall script (macOS and Linux)
You can pipe the repository uninstall script into bash. It removes the globally installed @patternfly/patternfly-cli package with npm. It does not remove Node.js, nvm, Corepack, or GitHub CLI.
curl -fsSL https://raw.githubusercontent.com/patternfly/patternfly-cli/main/scripts/uninstall.sh | bashSwap main for another branch or tag if you need a specific revision. To save the script and inspect it before running:
curl -fsSL https://raw.githubusercontent.com/patternfly/patternfly-cli/main/scripts/uninstall.sh -o uninstall-patternfly-cli.sh
bash uninstall-patternfly-cli.shnpm
If you installed with npm globally, you can remove the package with:
npm uninstall -g @patternfly/patternfly-cliPrerequisites
If you use the install script on macOS or Linux, it covers the items below (you may still need administrator access for system packages). Otherwise, install the following yourself before using the CLI:
- Node.js and npm (v20–24) — npm · Node.js downloads
- Corepack — enable with
corepack enable(included with Node.js). Run the command after installing npm. - GitHub CLI — Install GitHub CLI
Usage
After installation, you can use the CLI by running:
patternfly-cli [command]Available Commands
create: Create a new project from the available templates.list: List all available templates (built-in and optional custom).update: Update your project to a newer version.cli-upgrade: Upgrade the globally installed CLI to the latest npm release. It runsnpm install -g @patternfly/patternfly-cli@latest; use your package manager’s equivalent if you did not install with npm.init: Initialize a git repository and optionally create a GitHub repository.save: Commit and push changes to the current branch.load: Pull the latest updates from GitHub.deploy: Build and deploy your app to GitHub Pages.
Custom templates
You can add your own templates in addition to the built-in ones by passing a JSON file with the --template-file (or -t) option. Custom templates are merged with the built-in list; if a custom template has the same name as a built-in one, the custom definition is used.
Create with custom templates:
patternfly-cli create my-app --template-file ./my-templates.jsonList templates including custom file:
patternfly-cli list --template-file ./my-templates.jsonJSON format (array of template objects, same shape as the built-in templates):
[
{
"name": "my-template",
"description": "My custom project template",
"repo": "https://github.com/org/repo.git",
"options": ["--single-branch", "--branch", "main"],
"packageManager": "npm"
}
]name(required): Template identifier.description(required): Short description shown in prompts andlist.repo(required): Git clone URL.options(optional): Array of extra arguments forgit clone(e.g.["--single-branch", "--branch", "main"]).packageManager(optional):npm,yarn, orpnpm; defaults tonpmif omitted.
Development / Installation
Install Dependencies
npm installBuild
To build the project, run:
npm run buildInstalling the cli
After building the cli you can install the cli globally by running the following command:
npm install -gAfter that you can now execute the cli via patternfly-cli command in the terminal.
Releasing
This project uses semantic-release to automate versioning and releases based on Conventional Commits.
- CI: Pushing to
mainruns the release workflow. If there are commits that warrant a release (e.g.feat:,fix:,BREAKING CHANGE:), it will create a GitHub release, updateCHANGELOG.md, and bump the version inpackage.json. - Local dry run:
npx semantic-release --dry-run(no push or publish). - npm publish: By default only GitHub releases are created. To publish to npm, set the
NPM_TOKENsecret in the repo and set"npmPublish": truefor the@semantic-release/npmplugin in.releaserc.json.
