The centralised hub for Comic Relief's general and campaign pattern lab
npm install @comicrelief/pattern-lab/dist/index.html/dist/[project_name]/index.htmlnpm install @comicrelief/pattern-lab --save@import '~pattern-lab'; (or use includePaths: ['node_modules'] in grunt-sass options configuration)
* or copy css file straight to your project
git clone https://github.com/comicrelief/pattern-lab ~/cr_root/pattern-labcd ~/cr_root/payin/webyarn link-patternlabnpm install npm-link-local --global and then e.g. npm-link-local ~/cr_root/pattern-labEither 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 or yarn watch
* go to http://localhost:1337 to view styleguide
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
Minimally, only and subject is required.
fix: A bug fix
`$3
When there is a new feature / functionality is added to the library
`
feat: A new feature
`$3
When there is a breaking change, we need to extend our commit message and add BREAKING CHANGE: A to its body. This message can be added to any type of commit.
Example:
`
feat: A new featureBREAKING CHANGE: A description of the change
`$3
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
``[npm-image]: https://badge.fury.io/js/%40comicrelief%2Fpattern-lab.svg
[npm-url]: https://www.npmjs.com/package/@comicrelief/pattern-lab
[concourse-image]: https://ci.services.comicrelief.com/api/v1/teams/main/pipelines/pattern-lab/jobs/pattern-lab-test/badge
[concourse-url]: https://ci.services.comicrelief.com/teams/main/pipelines/pattern-lab