@hubspot/cms-cli
This is a beta release. Please refer to our developer beta terms. For support, join the #local-dev-beta channel in the HubSpot Designers and Developers Slack.
Provides an hs
command for interacting with the HubSpot CMS. Learn more about building on the HubSpot CMS.
Getting started
For more information on using these tools, see Local Development Tooling: Getting Started
Installation
Using yarn
yarn add @hubspot/cms-cli --dev
Using npm
npm install @hubspot/cms-cli --save-dev
Configuration
Once the @hubspot/cms-cli
has been added to a project, a config file named hubspot.config.yml
will also be needed. The config can be at the project level or higher up in the directory tree.
Authentication
There are two ways that the tools can authenticate with HubSpot.
OAuth2 (recommended)
- Create a developer app
- Run
yarn hs init
or npx hs init
- Select
OAuth2
and follow the steps
Note: The Portal ID used should be the CMS Portal ID(not the developer app ID). Client ID and Client Secret are from the developer app.
HubSpot API Key
- Set up an API Key for the CMS Portal
- Run
yarn hs init
or npx hs init
- Select
API Key
and follow the steps entering the API Key from step 1
Commands
Note: When @hubspot/cms-cli
is installed local to a project, the commands need to be prefixed with either yarn
if using yarn
or npx
if using npm
.
Show all commands
hs help
Upload a file or directory to the Design Manager
hs upload --portal=DEV [src] [dest]
Fetch a file or directory by path from the Design Manager
hs fetch --portal=DEV [path] [dest]
hs fetch --portal=DEV --overwrite [path] [dest]
Watch a directory of files and automatically upload changes to the Design Manager
hs watch --portal=DEV [src] [dest]
Create a new asset locally
hs create [type] [dest]
Delete a file or directory from the Design Manager
hs remove --portal=DEV [path]
Authenticate against a portal using OAuth2
hs auth oauth2
Upload a file or directory to the File Manager
hs filemanager upload --portal=DEV [src] [dest]
Note: Uploading to the File Manager is only supported when using the apiKey
at this point.