@comicrelief/pattern-lab
v7.67.1
Published
The centralised hub for Comic Relief's general and campaign pattern lab
Downloads
491
Readme
Comic Relief Pattern Lab
A Node-based project to supply Sass components and a styleguide generator.
The idea
To have a centralised hub supply common styling across Comic Relief products.
Quicklinks
Styleguide
- generated by kss-node
- support twig template
- multiple entries
- view on
/dist/index.html
/dist/[project_name]/index.html
Import styling to a project
run
npm install @comicrelief/pattern-lab --save
on local scss file, add
@import '~pattern-lab';
(or use
includePaths: ['node_modules']
in grunt-sassoptions
configuration)or copy css file straight to your project
Contribute styling to pattern-lab
Development workflow
Get it up and running in another project
- Clone this repository to a directory at the root level of your CR dev, alongside the other project. e.g.
git clone https://github.com/comicrelief/pattern-lab ~/cr_root/pattern-lab
- Go to the npm root level of the project you want to use it in. E.g. for payin:
cd ~/cr_root/payin/web
- If that project has a link script, just
yarn link-patternlab
- Or if it doesn't,
npm install npm-link-local --global
and then e.g.npm-link-local ~/cr_root/pattern-lab
Either of the last 2 steps creates a symlink in the other project's node_modules
, pointing to your local copy of pattern-lab
.
Make code changes
- it follows same development process: create feature branch -> commit and push changes -> create pull request for code review
- run
yarn watch
to liveload file changes - run
yarn build
to generate all themes in the styleguide - run
yarn build-base
to only generate the base theme in the styleguide - run
yarn build-cr17
to only generate the cr17 theme in the styleguide - run
yarn build-frost
to only generate the frost theme in the styleguide - run
yarn build-payin
to only generate the payin theme in the styleguide - run
yarn build-rnd17
to only generate the rnd17 theme in the styleguide - run
yarn build-sr18
to only generate the sr18 theme in the styleguide
Dev server
- run
yarn dev-server
oryarn watch
- go to
http://localhost:1337
to view styleguide
Semantic Release Process
Git commit messages are used to automatically publish a new version of npm package. To achieve this, every commit message should have a type and a message in the format described below.
Travis CI will run a job automatically after PR is merged and analyze all commit messages since last npm release. Then semantic-release plugin will calculate new version according to this result.
To avoid commit loops, version numbers are not committed back to package.json
. Versions are listed on GitHub releases and used in the modified package.json published to npm.
Commit messages are expected to be in this format:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
Minimally, only type
and subject
is required.
Bugfix / patch
When there are no breaking changes or no new features. When we are fixing bugs or styles.
fix: A bug fix
Minor / Feature
When there is a new feature / functionality is added to the library
feat: A new feature
Major / breaking change
When there is a breaking change, we need to extend our commit message and add BREAKING CHANGE: A
description of the change
to its body. This message can be added to any type of commit.
Example:
feat: A new feature
BREAKING CHANGE: A description of the change
Automating commit message format
Commitizen library is added as npm dev dependency and it can be used to generate commit messages by answering a few questions and skipping the ones which are not relavent. Example workflow:
- Make code changes in your feature branch
- Run
git add .
to add changed files and get ready to commit - Run
yarn commit
This will start an interactive process to build commit message. Simply answer all questions or
press Enter
to skip.
- Repeat and follow rest of the GitHub workflow
CI Pipelines
We are using Concourse CI and Travis CI to run tasks, and Netlify and Cloud Foundry to deploy pattern-lab. When a pull request is created, it triggers a Netlify preview deployment, which is at
https://deploy-preview-[PULL_REQUEST_ID]--cr-pattern-lab.netlify.com/
Pull request commits and merge also trigger CI visual regression tests as explained below. Output is available at
https://ci.services.comicrelief.com/teams/main/pipelines/pattern-lab
Visual Regression
- We're using BackstopJS
- CI runs tests on pull request
- Currently the test check against dist/index.html and has the latest changes from master as reference in
test/visual/reference
. - See configuration in backstop.json:
"url": "dist/index.html",
- Run visual regression test locally:
yarn backstop-test-local
- This will open the pass/fail report from
/tests/visual/html_report/index.html
in your browser. - If the test fails, but the changes were inteded you can approve the test and use your changes as the new reference:
yarn backstop approve
- Run the test locally again and it should pass now.
- Commit the new reference files.