A Node-based project to supply Sass components and a styleguide generator.
To have a centralised hub supply common styling across Comic Relief products.
- generated by kss-node
- support twig template
- multiple entries
- view on
Import styling to a project
npm install @comicrelief/pattern-lab --save
on local scss file, add
includePaths: ['node_modules']in grunt-sass
or copy css file straight to your project
Contribute styling to pattern-lab
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:
- If that project has a link script, just
- Or if it doesn't,
npm install npm-link-local --globaland then e.g.
Either of the last 2 steps creates a symlink in the other project's
node_modules, pointing to your local copy of
Make code changes
- it follows same development process: create feature branch -> commit and push changes -> create pull request for code review
yarn watchto liveload file changes
yarn buildto generate all themes in the styleguide
yarn build-baseto only generate the base theme in the styleguide
yarn build-cr17to only generate the cr17 theme in the styleguide
yarn build-frostto only generate the frost theme in the styleguide
yarn build-payinto only generate the payin theme in the styleguide
yarn build-rnd17to only generate the rnd17 theme in the styleguide
yarn build-sr18to only generate the sr18 theme in the styleguide
- go to
http://localhost:1337to 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.
Commit messages are expected to be in this format:
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
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.
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
git add .to add changed files and get ready to commit
This will start an interactive process to build commit message. Simply answer all questions or
Enter to skip.
- Repeat and follow rest of the GitHub workflow
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
Pull request commits and merge also trigger CI visual regression tests as explained below. Output is available at
- 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
- See configuration in backstop.json:
- Run visual regression test locally:
- This will open the pass/fail report from
/tests/visual/html_report/index.htmlin 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.