@loadsmart/icons
v0.110.0
Published
Icons by Loadsmart
Downloads
567
Maintainers
Keywords
Readme
Table of Contents
- Table of Contents
- About The Project
- Usage
- Examples
- Contributing
- Deployment and Publishing process to NPM
- Development
About The Project
A library for using icons at Loadsmart.
Usage
You can get it via yarn.
yarn add @loadsmart/icons
Examples
Basic usage
You can use Loadsmart icons in your React projects as simple as this:
import { IconAccessorialAirport } from "@loadsmart/icons";
class App extends React.Component {
render() {
return <div> This is an <IconAccessorialAirport /></div>
}
}
Typescript usage
TBD
Contributing
Icons Library
- Clone the project
- Create a new branch based off of
master
- Make all the changes needed
- Run this to build the necessary
.js
filesyarn prepublish
- Commit all the changes to your new branch
- Make sure you also log the changes under the
Unreleased
section of theCHANGELOG.md
and commit it - Open a PR to merge on
master
Deployment and Publishing process to NPM
The release of loadsmart icons is based on tag
:relaxed: we use Rollbot for release. It will generate a release by bumping the version on the CHANGELOG.md and creating a new tag.
Steps to make a release via Rollbot:
- As Rollbot won’t update the version in
package.json
, so we still need to bump the version manually
$ yarn bump
It will ask you to put the specific release version, please follow our tag pattern /^\d+\.\d+\.\d+$/
(x.xx.x)
Commit the change in
package.json
and create a pr[Release] x.xxx.x
, once it merges:Using the
/release
command in #eng-frontend channel,/release @loadsmart/icons major
or/release @loadsmart/icons minor
or/release @loadsmart/icons patch
If Rollbot creates the tag successfully, it will send a message saying “tag x.xxx.x created”
Please check CircleCI if all checks of deploy pass, then publish the release in GitHub :beers:
:shipit:If Rollbot doesn't work, please follow these steps as an alternative:
- Checkout a new branch from the latest master branch (Usually named as:
release/x.xx.x
) - Update
CHANGELOG.md
(follow version pattern/^\d+\.\d+\.\d+$/
- x.xx.x) - Bump the version using the command below:
$ yarn bump
It will ask you to put the specific release version, please follow our tag pattern /^\d+\.\d+\.\d+$/
(x.xx.x)
git add
the updatedpackage.json
andCHANGELOG.md
files and commit the changes with a message following the standard:
[Release] x.xx.x
This commit message is necessary for our bot to automatically approve and merge the release PR. Please note the brackets enclosing the word "Release" and keep the version in the same pattern used elsewhere.
- Push your branch to origin and open a PR to master (With the same title as your commit:
[Release] x.xx.x
)
:+1: When the CI passes :white_check_mark:, it will automatically merge your PR into master.
Checkout master locally again and pull latest changes
Create a tag, please follow our tag pattern
/^\d+\.\d+\.\d+$/
(x.xx.x)
$ git tag <new_tag>
- Push the tag.
$ git push origin <new_tag>
The Circle CI workflows can be checked here
Circle CI will start a deploy to production :rocket:
- :memo: Create a new release in GitHub referencing the tag you just created:
For release title, follow the exact same pattern used in the tag version, and for description you can simply insert the respective CHANGELOG.md
section.
This last step is what triggers some automated side-effects such as the slackbot that broadcasts new production releases along with their changelog, so don't skip it!
Then you are all set :balloon:
Tip: Always keep semver in mind.
Demo Deployment
- Once a new versions is published on NPM, circleci will deploy the new demo page to Github Pages, thus making it available on https://loadsmart.github.io/icons-showcase/#/.
Development
Setup the project
Before starting, keep this in mind about our branches:
master
is where the library code resides, all the icons SVG and JS files are here. Code enters here through PRs.
To get a local copy up and running follow these simple steps.
Install Yarn:
$ brew install yarn
Clone the project:
$ git clone [email protected]:loadsmart/icons.git
Install local dependencies:
$ yarn
Adding a new icon
Add your SVG to
/src/assets/icons
.$ grunt server
Clean up your SVG file, a good example you can see below.
<svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg"> <path d="M19.8 19.8V3h8.4v16.8H45v8.4H28.2V45h-8.4V28.2H3v-8.4h16.8z" fill="currentColor" fill-rule="evenodd"/> </svg>
- Make sure that you are using
fill="currentColor"
. - Remove all references to
width
andheight
in your SVG file
- Run
$ yarn generate
This command will create a React component for your SVG file, and also will include this component to the library.
- Submit a pull request