When merging Pull Requests on GitHub, use the squash and merge button, so that our timeline of master branch is linear.
Also make sure every Pull Request has a
PR label, and one of the semver labels (
These labels later help generate automated changelogs.
To start developing the packages:
Clone the repository, and run:
$ npm install $ npm run bootstrap
Now you can run the
$ npm run lint $ npm run test $ npm run cover
Which are shortcuts for:
$ ./node_modules/.bin/lerna run lint $ ./node_modules/.bin/lerna run test $ ./node_modules/.bin/lerna run cover
To run npm scripts at individual package level:
$ ./node_modules/.bin/lerna run --scope frint-react test
We keep all the
devDependencies at root
package.json for avoiding unnecessary duplication.
To install dependencies at individual package level, just update their
package.json (even if the dependency is a package from this repo itself), and run this from root:
$ npm run bootstrap
bootstrap script takes care of installing and linking the dependencies in your packages.
To publish a new release:
$ make release
You will be prompted to select a semver (patch/minor/major), and once chosen, all your packages (that have changed) will be published to
If you wish to release your packages as canary versions:
$ make release-canary
Doing so would only publish your packages to
npm, without affecting your git repository in any way.
And the versions on
npm would look like
1.0.0-alpha.12345678, where the last part is your commit hash.
Canary releases are useful if you want to publish nightly releases for example.
Changelog for a particular version can be generated as follows:
$ make changelog GITHUB_API_TOKEN="..." FROM_TAG="v1.0.0" TO_TAG="v2.0.0"
Doing so would output the changelog in your Terminal, which you can later add to the
You can generate a token here
Since this is a public repository, you only need
public_repo access for the token.
CHANGELOG.md file is updated, it is up to you to commit and push it to GitHub.
There is a handy command available:
$ make push-changelog
We also copy the generated changelog text of a specific version to GitHub Releases section.
Show all the packages with their versions in the repository:
$ make list-packages
Show packages that have been updated locally, and needs publishing:
$ make list-updated