@xtreamsrl/githooks
v1.1.0
Published
A Nx generator to help with pre-commit hooks setup.
Readme
@xtreamsrl/githooks
A Nx generator which:
- install the
huskyandcommitlintpackages - configure the
huskypackage to runcommitlintoncommit-msghook
The commitlint configuration can be customized on installation, choosing between the @commitlint/config-conventional
and @commitlint/config-angular presets.
The following commitlint rules are configured:
type-enum: the commit type must be one of the following:build,ci,chore,docs,feat,fix,perf,refactor,revert,style,test;scope-enum: the commit scope must be one of the following scopesall,release,scriptsor one of the apps or libs names, eventually prefixed withliborapp;scope-empty: the commit scope must never be empty.
Installation
npm install @xtreamsrl/githooksUsage
Generator
Run the nx generator and follow the instructions:
nx generate @xtreamsrl/githooksUpdate commitlint configuration
The commitlint configuration is generated once when the nx generator is executed. So it will includes in the admitted scopes the apps and libs names at the moment of the installation.
When a new app or lib is created, the commitlint configuration must be updated to include the new scope.
To do that, update manually the .commitlintrc.json file, adding the new scope to the scope-enum rule.
Build
Run nx build githooks to build the library.
Run unit tests
Run nx test githooks to execute the unit tests via Jest.
Linting
Run nx lint githooks to execute the lint via ESLint.
Versioning
Export the GH_TOKEN environment variable with your GitHub token with at least the repo scope:
export GH_TOKEN=<YOUR_PERSONAL_GH_TOKEN>Then run the following command:
lerna versionThe GH_TOKEN is needed to push the version commit and tag to the remote repository and to create the release on GitHub.
For general information about the versioning process, please refer to the root Readme Versioning section.
Publishing
Update your local .npmrc file to include the following lines:
@xtreamsrl:registry=https://registry.npmjs.org/
//registry.npmjs.org/:_authToken=${NPM_TOKEN}The ${NPM_TOKEN} placeholder is a npm personal access token publish permissions on the @xtreamsrl organization.
It can be treated as placeholder to replace with the actual token value, or you can set it as an environment variable:
export NPM_TOKEN=<YOUR_PERSONAL_NPM_TOKEN>Then run the following command:
npm run lerna-publish