We have put together an example CMS JS project as an introduction to our platform to download and explore. In that project there are examples of partials, modules, and islands that will help to illustrate how to make use of these building blocks.
To setup your development environment to work with JS rendering, you’ll first need a few things:
- A HubSpot account with CMS Free, Starter, Pro, or Enterprise access
- Node.js - v16.0 or higher and associated version of NPM
This section will take you through the process of deploying your first JS rendering project on HubSpot.
First, clone the CMS React repository.
git clone https://github.com/HubSpot/cms-react.git
Next, navigate to this Hello World folder.
cd cms-react/examples/hello-world
This folder has a few significant directories:
hello-world-theme/
: Some example HubL templates that refer to JS components elsewherehello-world-project/
: The HubSpot project folderhello-world-project/hello-world-app
: A package inside of the project that can contain JS components (a project can contain many different package types, like CRM apps, etc)
Open your terminal and change into the Hello World folder (cms-react/examples/hello-world
) if you are not already there.
Then run npm install
. This will install all the local development tools you need—like @hubspot/cli
and @hubspot/cms-dev-server
—and the dependencies used inside hello-world-app/ JS component code.
Run hs init
from the root of the repository to configure it to upload to your HubSpot account using your personal access key. When setting up JavaScript assets for the first time, you will need to deactivate and regenerate your personal access key making sure it includes CMS Pages
, Design Manager
, Developer Projects
, and GraphQL Data Fetching
permissions. This will create a hubspot.config.yml
file that is required for both uploading changes and local development. See the HubSpot CLI documentation for more information.
Warning If you are using an existing access key from a previous call to
hs init
orhs auth
, you will need to deactivate and regenerate the access key to include new scopes necessary for local CMS React development.
Next double-check you are still in examples/hello-world/
and run npm run deploy
to upload the Hello World project to your HubSpot account. Once the project is uploaded, built, and deployed, you will be able to add the modules and partials to your HubSpot templates.
Still within examples/hello-world/
, run npm run upload:hubl
to upload the corresponding example HubL files to your account.
At this point, you should be able to create a page from one of the hello-world-theme
templates and see the output of the React components included in them in the page preview.
Now that you have your first deployment under your belt, let’s try developing locally.
To do this, simply run the dev server with npm run start
and navigate to a development URL such as http://hslocal.net:3000/partial/Cars. Now when you make edits to the Cars.jsx
partial, your browser will automatically reload to display your changes.
Also for easier access, you can visit http://hslocal.net:3000 to see an index page that links to the /partial/<partial filename>
or /module/<module name>
endpoint for every JS partial and module inside your project.
In addition to direct local previews of JS partials and modules, you can preview your local JS component inside of live HubL-rendered pages. To do that you first need to create a page:
- Go to Control Center
- Click “Create”, ”Create Landing page”, write a page name, and click “Create page”..
- Switch your active theme to “JS Building Blocks - Hello World”, and select one of the Hello World templates
- Give that page a name in the settings tab, then publish that page and preview it.
After that, you can proxy that page locally by:
- Running the local dev server as described above
- Visit the newly created page in your browser
- Open the sprocket menu and select Open Local Dev Server:
- Your local JavaScript source changes will appear immediately in the context of the HubL page
The “Hello World” sample code repository has been tested with and supports the NPM and “Classic” Yarn package managers. There have been reported issues with “Modern” Yarn and “Hello World”. We recommend while working with this sample code that you do not use “Modern” Yarn.