Integration of Varbase with Storybook
Varbase has been integrated with Storybook to provide a listing of stories for Single Directory Components (SDC) components. This integration allows for easier development and testing of Varbase Components.
Steps to Set up a Working Storybook for Varbase
Enable the
cl_servermodule on the site either through the site's interface or by running the command./bin/drush en cl_serverwith Drush. Note that the CL Server module should not be kept running on a production site.Navigate to
"/admin/people/permissions/module/cl_server"to give theUse the CL Server endpointpermission to all user roles. Check theAnonymous userandAuthenticated usercheckbox and pressSave permissionsubmit button

Use Drush to grant specified permission(s) to a role.
./bin/drush role:perm:add anonymous 'use cl server'
./bin/drush role:perm:add authenticated 'use cl server'
Use the CL Server endpoint
Warning: Give to trusted roles only; this permission has security implications.
Allows a user to access the Component Library: Server endpoint
Use Drush to remove specified permission(s) from a role.
./bin/drush role:perm:remove anonymous 'use cl server'
./bin/drush role:perm:remove authenticated 'use cl server'
Add the following exclude of modules to the
settings.phporsettings.local.phponly to the development environment:
# Disable caches during development. This allows finding new components without clearing caches.
// $settings['cache']['bins']['component_registry'] = 'cache.backend.null';
# Then disallow exporting config for 'cl_server'. Instructions are at the bottom of the file.
$settings['config_exclude_modules'] = ['devel', 'stage_file_proxy', 'cl_server'];Change the following Cross-Site HTTP requests (CORS) in the
development.services.ymlfile.
# Local development services.
#
# To activate this feature, follow the instructions at the top of the
# 'settings.platformsh.php' or 'settings.local.php' file, which sits next to this file.
parameters:
twig.config:
debug: true
cache: false
http.response.debug_cacheability_headers: true
cors.config:
enabled: true
# Specify allowed headers, like 'x-allowed-header'.
allowedHeaders: ['*']
# Specify allowed request methods, specify ['*'] to allow all possible ones.
allowedMethods: ['*']
# Configure requests allowed from specific origins. Do not include trailing
# slashes with URLs.
allowedOrigins: ['*']
# Configure requests allowed from origins, matching against regex patterns.
allowedOriginsPatterns: ['*']
# Sets the Access-Control-Expose-Headers header.
exposedHeaders: false
# Sets the Access-Control-Max-Age header.
maxAge: false
# Sets the Access-Control-Allow-Credentials header.
supportsCredentials: true
services:
cache.backend.null:
class: Drupal\Core\Cache\NullBackendFactory
Enable Twig debugging by
debug: truein thedevelopment.services.ymlfile.
Having a local services file. Make sure to have the right path for custom local development services file. sites/default/development.local.services.yml
$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/default/development.local.services.yml';Having a local settings settings.local.php file. When used in a local development environment, or in Development, Staging, or Demo hosts.
Enabling Twig debugging is not recommended in production environments.
Disable the Twig cache by
cache: falsein thedevelopment.services.ymlfile.
Disabling the Twig cache is not recommended in production environments.
Change the Local Development Domain
Change
varbase.localin thepackage.jsonfile to the appropriate local or development domain name.Replace
process.env.STORYBOOK_CL_SERVER_DOMAINin thepreview.jsfile with the base URL of your project or an environment variable representing the local or development domain.Open a command terminal window and navigate to your project's directory.
Run the
yarn installcommand in the terminal to install the necessary dependencies.Run the
yarn storybook:devcommand to start the development site for the Storybook.The default browser will open, displaying the list of Default Varbase Components in the Storybook.
Storybook Build
Building the storybook ones for the project, only for demos, staging, or hosted development, when the other ports are not allowed.
Run the yarn storybook:build command to build the story, in the local or in at the dev, test, staging, or demo server.
A domain name could point at the storybook folder.
Example:
An example development, staging or demo
my-staging-varbase-site.comdomain name can point at thedocrootdirectory, which will bootstrap from VarbaseA sub domain
storybook.my-staging-varbase-site.comdomain name can point at thestorybookdirectory, which will load the Varbase Storybook, and the Component Library Server will have requests from themy-staging-varbase-site.com
Customizing Varbase Storybook for a Project:
Switching Between Themes
To showcase a custom cloned generated theme, uncomment and modify the following line in the .storybook/preview.js file:
// mytheme: {title: 'My Custom Theme for a Project'}
Show Custom Vartheme BS5's Components
To include components from Vartheme BS5 Starterkit, uncomment and modify the following line in the .storybook/main.js file:
"../docroot/themes/contrib/vartheme_ba5/components/**/*.mdx",
"../docroot/themes/contrib/vartheme_ba5/components/**/*.stories.@(json|yml)",Show Custom Theme's Components
In case of having a custom theme for a project by
Creating Your Own ThemeTo include components from a custom cloned generated theme, uncomment and modify the following line in the .storybook/main.js file:
"../docroot/themes/custom/mytheme/components/**/*.mdx",
"../docroot/themes/custom/mytheme/components/**/*.stories.@(json|yml)",Please ensure that the path to the custom theme is correct. It should be located either in "../docroot/themes" or "../docroot/themes/custom"
Show Custom Module's Components
To include components from a custom module, uncomment and modify the following line in the .storybook/main.js file:
"../docroot/modules/custom/my_custom_module/components/**/*.mdx",
"../docroot/modules/custom/my_custom_module/components/**/*.stories.@(json|yml)",More Information About Bootstrap ~5.3.0 Theme Color Modes

"light" theme color mode
"dark" theme color mode
Run Varbase Storybook in Platformsh
Having a working Storybook for development, testing or staging.
NOT for production environments.
Select The Varbase Template as The Project Type
Choose Vardot/platformsh-varbase from the pre-existing code base template to start a project with.

Select Varbase as the template, by default a Varbase 10 will be built

After creating the project and installing Varbase 10
Edit the applications.yaml File in the .platform Folder
applications.yaml File in the .platform Folder# -------------------------------------------------------------
# Uncomment the following when start a storybook in development or staging
# NOT for production environments.
#
# Follow with Integration of Varbase with Storybook
# https://docs.varbase.vardot.com/v/10.0.x/developers/theme-development-with-varbase/integration-of-varbase-with-storybook
#
# This will allow for a start of a storybook:http upstream
# -------------------------------------------------------------
# - name: storybook
# type: 'nodejs:18'
# source:
# root: "/"
# dependencies:
# php:
# "composer/composer": "~2.0"
# nodejs:
# npm: "^6.10"
# node: "^18.17"
# yarn: "^1.22"
# disk: 512
# build:
# flavor: none
# variables:
# env:
# NODE_OPTIONS: --max-old-space-size=4096
# STORYBOOK_CL_SERVER_DOMAIN: 'varbase.local'
# hooks:
# build: |
# set -e
# cd $PLATFORM_APP_DIR
# composer install --ignore-platform-reqs --no-scripts
# yarn install --frozen-lockfile
# yarn storybook:build
# post_deploy: |
# cd $PLATFORM_APP_DIR/.storybook/
# export STORYBOOK_CL_SERVER_DOMAIN=$(node setup-storybook.js)
# echo "STORYBOOK_CL_SERVER_DOMAIN: $STORYBOOK_CL_SERVER_DOMAIN"
# web:
# locations:
# '/':
# root: 'storybook'
# passthru: true
# index: ["index.html"]
# allow: true
# headers:
# Access-Control-Allow-Origin: "*"
# Access-Control-Expose-Headers: "true"
# Access-Control-Max-Age: "false"
# Access-Control-Allow-Credentials: "true"
# commands:
# start: |
# sleep infinity# -------------------------------------------------------------
# Uncomment the following when start a storybook in development or staging
# NOT for production environments.
#
# Follow with Integration of Varbase with Storybook
# https://docs.varbase.vardot.com/v/10.0.x/developers/theme-development-with-varbase/integration-of-varbase-with-storybook
#
# This will allow for origin
# -------------------------------------------------------------
# headers:
# Access-Control-Allow-Origin: "*"
# Access-Control-Expose-Headers: "true"
# Access-Control-Max-Age: "false"
# Access-Control-Allow-Credentials: "true"
Edit the routes.yaml File in the .platform Folder
routes.yaml File in the .platform Folder# ---------------------------------------------------------------------------
# Uncomment the following when start a storybook in development or staging
# NOT for production environments.
#
# Follow with Integration of Varbase with Storybook
# https://docs.varbase.vardot.com/v/10.0.x/developers/theme-development-with-varbase/integration-of-varbase-with-storybook
#
# This will allow for a storybook sub domain to point
# at the storybook:http upstream
# ---------------------------------------------------------------------------
# "https://storybook.{default}":
# type: upstream
# upstream: "storybook:http"Replace Site URL with an Environment URL
Edit the preview.js file in the .storybook folder
server: {
// Replace this with your Drupal site URL, or an environment variable.
url: process.env.STORYBOOK_CL_SERVER_DOMAIN,
},Use 'development.local.services.yml' File
Have the following in the settings.platformsh.php file
if (isset($platformsh->branch)) {
if (!$platformsh->onProduction() || !$platformsh->onDedicated()) {
$settings['container_yamls'][] = $app_root . '/' . $site_path . '/development.local.services.yml';
}
}Both files are in the Vardot/platformsh-varbase project template.
After committing and starting the development environment for the development branch,
The Storybook link will work as follow
https://storybook.{default}Related Integration Issues
Last updated