Socket
Book a DemoInstallSign in
Socket

storybook-branch-switcher

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

storybook-branch-switcher

A Storybook addon to navigate between multiple Git branches.

latest
Source
npmnpm
Version
0.6.0
Version published
Maintainers
1
Created
Source

Storybook Branch switcher

A Storybook 7+ addon to navigate between multiple Git branches. Also a command-line tool to automatically generate one instance per branch.

Screenshot of add-on in action in Storybook

Installation

Install the following module with npm:

npm i --save-dev storybook-branch-switcher

or with yarn:

yarn add -D storybook-branch-switcher

Then, add following content to .storybook/main.js

module.exports = {
  addons: ["storybook-branch-switcher"],
};

CLI

This package exports a script called sb-branch-switcher which will automatically generate one Storybook instance per branch, based on your Git workflow. (We support Git submodules, and any checkouts will only run in a clean workspace.)

Configuration

The CLI needs a configuration file located at .storybook/.branches.json by default. But you can create this file in another location and pass the path to the CLI with the --config or --c argument.

Example : sb-branch-switcher --config libs/storybook-host/.storybook/.branches.json

Here is the explanation of all available options:

KeyDefaultDescription
from-(mandatory) Where the Storybook instance is located after a build
to-(mandatory) Where all Storybook instances will be copied
directorycurrent folderAbsolute path where the project belongs
script_namebuild-storybookName of the NPM script that builds the Storybook
default_branchmasterYour default Git branch
default_roottrueCopy instance for default branch into root folder
provider-Configuration to retrieve branches and commits to process

With Bitbucket (opened PRs)

This provider enables you to generate one Storybook instance per opened PR of a Bitbucket repository (supports cloud and on-premise servers).

KeyDefaultDescription
type-(mandatory) must be "bitbucket"
project-(mandatory) name of the Bitbucket project to target
repository-(mandatory) name of the Bitbucket repository to target
urlhttps://bitbucket.orgBitbucket host to connect to

Authorization (optional)

If the Bitbucket instance needs an authorization, you can use one of the following options with environment variables.

  • Basic login details : BITBUCKET_USERNAME and BITBUCKET_PASSWORD
  • Use an access token for HTTP Rest API: BITBUCKET_TOKEN

With GitHub (opened PRs)

This provider enables you to generate one Storybook instance per opened PR of a GitHub repository.

KeyDefaultDescription
type-(mandatory) must be "github"
owner-(mandatory) name of the GitHub owner
repository-(mandatory) name of the Github repository to target
urlhttps://api.github.comGithub host to connect

You must set GITHUB_TOKEN environment variable to access the GitHub.com API.

With Gitlab (opened MRs)

This provider enables you to generate one Storybook instance per opened MR in a Gitlab repository.

KeyDefaultDescription
projectId-(mandatory) projectId of the project
urlhttps://gitlab.comGitlab host to connect to

You must set GITLAB_TOKEN environment variable to access the Gitlab.com API.

Configuration file example

{
  "from": "dist/storybook",
  "to": "dist/storybook-bundle",
  "default_branch": "master",
  "default_root": true,
  "provider": {
    "type": "bitbucket",
    "project": "my-project",
    "repository": "my-design-system"
  }
}

FAQ

How do I host my storybook in a subpath? (e.g. GitHub Pages)

Out-of-the-box this addon supports hosting Storybook at the root path, but you'll need some extra setup if you'd like to host a storybook in a subpath.

✅ Out-of-the-box: root path🛠️ Requires setup: subpaths
http://localhost:6006http://localhost:6006/some/path
https://sub.example.comhttps://your-username.github.io/your-repo

Just make these changes in your .storybook/preview.js file, in this example, publishing to GitHub Pages.

Click for example configuration...
diff --git a/.storybook/preview.js b/.storybook/preview.js
index 6731af8..7587cb6 100644
--- a/.storybook/preview.js
+++ b/.storybook/preview.js
@@ -1,4 +1,5 @@
 /** @type { import('@storybook/react').Preview } */
 const preview = {
   parameters: {
     controls: {
@@ -10,4 +11,18 @@ const preview = {
   },
 };

+/* Any envvar prefixed with STORYBOOK_ will be available in the built storybook, ie. preview.js
+ * See: https://storybook.js.org/docs/configure/environment-variables
+ *
+ * Set STORYBOOK_PUBLISH_FOR_WEB=true in your build environment, along with the
+ * domain and path you'd like to host from.
+ */
+if (process.env["STORYBOOK_PUBLISH_FOR_WEB"]) {
+  preview.parameters = {
+    branches: {
+      hostname: `your-username.github.io/your-repo`,
+    }
+  }
+}
+
 export default preview;

You'll then just need to set STORYBOOK_PUBLISH_FOR_WEB=true in whatever build environment you run the sb-branch-switcher command.

To test locally:

  • set hostname in .storybook/preview.js to localhost:6006/storybook-bundle,
  • build via STORYBOOK_PUBLISH_FOR_WEB=true sb-branch-switcher <other opts>
  • run npx http-server dist to serve your local storybook one subpath deeper.

Keywords

storybook-addons

FAQs

Package last updated on 04 Dec 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.