Simple git client for conventional changelog packages.
npm install @conventional-changelog/git-client[![ESM-only package][package]][package-url]
[![NPM version][npm]][npm-url]
[![Node version][node]][node-url]
[![Dependencies status][deps]][deps-url]
[![Install size][size]][size-url]
[![Build status][build]][build-url]
[![Coverage status][coverage]][coverage-url]
[package]: https://img.shields.io/badge/package-ESM--only-ffe536.svg
[package-url]: https://nodejs.org/api/esm.html
[npm]: https://img.shields.io/npm/v/@conventional-changelog/git-client.svg
[npm-url]: https://npmjs.com/package/@conventional-changelog/git-client
[node]: https://img.shields.io/node/v/@conventional-changelog/git-client.svg
[node-url]: https://nodejs.org
[deps]: https://img.shields.io/librariesio/release/npm/@conventional-changelog/git-client
[deps-url]: https://libraries.io/npm/@conventional-changelog%2Fgit-client/tree
[size]: https://packagephobia.com/badge?p=@conventional-changelog/git-client
[size-url]: https://packagephobia.com/result?p=@conventional-changelog/git-client
[build]: https://img.shields.io/github/actions/workflow/status/conventional-changelog/conventional-changelog/tests.yaml?branch=master
[build-url]: https://github.com/conventional-changelog/conventional-changelog/actions
[coverage]: https://coveralls.io/repos/github/conventional-changelog/conventional-changelog/badge.svg?branch=master
[coverage-url]: https://coveralls.io/github/conventional-changelog/conventional-changelog?branch=master
Simple git client for conventional changelog packages.
``bash`pnpm
pnpm add @conventional-changelog/git-client conventional-commits-filter conventional-commits-parseryarn
yarn add @conventional-changelog/git-client conventional-commits-filter conventional-commits-parsernpm
npm i @conventional-changelog/git-client conventional-commits-filter conventional-commits-parser
Note: conventional-commits-filter and conventional-commits-parser are required only if you need ConventionalGitClient#getCommits method.
`js
import {
GitClient,
ConventionalGitClient
} from '@conventional-changelog/git-client'
// Basic git client
const client = new GitClient(process.cwd())
await client.add('package.json')
await client.commit({ message: 'chore: release v1.0.0' })
await client.tag({ name: 'v1.0.0' })
await client.push('master')
// Conventional git client, which extends basic git client
const conventionalClient = new ConventionalGitClient(process.cwd())
console.log(await conventionalClient.getVersionFromTags()) // v1.0.0
`
Create a wrapper around git CLI instance.
#### getRawCommits(params?: GitLogParams): AsyncIterable
Get raw commits stream.
#### getTags(): AsyncIterable
Get tags stream.
#### getLastTag(): Promise
Get last tag.
#### checkIgnore(file: string): Promise
Check file is ignored via .gitignore.
#### add(files: string | string[]): Promise
Add files to git index.
#### commit(params: GitCommitParams): Promise
Commit changes.
#### tag(params: GitTagParams): Promise
Create a tag for the current commit.
#### getCurrentBranch(): Promise
Get current branch name.
#### push(branch: string): Promise
Push changes to remote.
#### verify(rev: string): Promise
Verify rev exists.
#### getConfig(key: string): Promise
Get config value by key.
Wrapper around Git CLI with conventional commits support.
#### getCommits(params?: ConventionalGitLogParams, parserOptions?: ParserStreamOptions): AsyncIterable
Get parsed commits stream.
#### getSemverTags(params?: GitTagsLogParams): AsyncIterable
Get semver tags stream.
#### getLastSemverTag(params?: GetSemverTagsParam): Promise
Get last semver tag.
#### getVersionFromTags(params?: GetSemverTagsParams): Promise
Get current sematic version from git tags.
MIT © Dan Onoshko