This project contains a script that helps to implement versioning algorithm described below.
Now we do not use semantic versioning due to a lot of breaking changes on current stage of the projects. We only:
- Set major version to 0
- Set minor version to 1
- Increment patch versions number.
Our version strategy now: 0.1.x
, where we change only x
.
Link: Diagram. Developing process
Versioning in live developing process:
- Work in branch
dev
/feature
/ ... - When you want to publish the release version, merge
feature
branch into branchmaster
. After you updatemaster
branch CI does the following:- Gets numeric version from
package.json
- Publish package to npm repo
- Increment version in
package.json
- Commits updated version.
Be sure you set an auto-commit check on CI to prevent an endless loop of commits and CI
- Gets numeric version from
- Version is incremented automatically if it is already exists (patch version is incremented).
If version is automatically changed, we have automatically created commit in branch
master
. If you want, you can set any different version number infeature
branch before merging tomaster
.
Link: Diagram. Publish script
Publishing algorithm looks like:
@eigenspace/argument-parser
- argument parser command line.@eigenspace/logger
- common logger.
@eigenspace/codestyle
- includes lint rules, config for typescript.@eigenspace/commit-linter
- linter for commit messages.husky
- used for configure git hooks.@types/*
- contains type definitions for specific library.@eigenspace/common-types
- contains common type definitions.@eigenspace/helper-scripts
- contains common scripts definitions.jest
- testing framework to write unit specs (including snapshots).ts-jest
- it lets you use Jest to test projects written in TypeScript.eslint
- it checks code for readability, maintainability, and functionality errors.eslint-plugin-eigenspace-script
- includes set of script linting rules and configuration for them.typescript
- is a superset of JavaScript that have static type-checking and ECMAScript features.lint-staged
- used for configure linters against staged git files.
Important!
Travis creates the .npmrc file during ci startup. This file contains the access token to the npm repository.