Skip to content

Release all package, generate changelogs and lint commit message.

License

Notifications You must be signed in to change notification settings

varletjs/varlet-release

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 15, 2025
a53afa9 · Jan 15, 2025

History

87 Commits
Nov 14, 2023
Jan 14, 2025
Jan 14, 2025
Nov 14, 2023
Nov 24, 2024
Jan 14, 2025
Jan 15, 2025
Dec 24, 2024
Jan 14, 2025
Jan 14, 2025
Jan 14, 2025
Jan 15, 2025
Jan 14, 2025
Jan 14, 2025
Nov 14, 2023
Nov 14, 2023

Repository files navigation

Varlet Release

English | 中文

NPM Version License

Intro

Varlet Release is a tool used for publishing all packages, generating change logs, and checking commit messages, relying on pnpm.

Installation

pnpm add @varlet/release -D

Usage

Using Command

# Release all packages and generate changelogs
npx vr release

# Specify remote name
npx vr release -r https://github.com/varletjs/varlet-release
# or
npx vr release --remote https://github.com/varletjs/varlet-release

# Just generate changelogs
npx vr changelog

# Specify changelog filename
npx vr changelog -f changelog.md
# or
npx vr changelog --file changelog.md

# Lint commit message
npx vr lint-commit -p .git/COMMIT_EDITMSG

# Publish to npm, which can be called in the ci environment
npx vr publish

Configuration

release

Params Instructions
-r --remote <remote> Specify remote name
-s --skip-npm-publish Skip npm publish
-c --check-remote-version Check if the remote version of the npm package is the same as the one you want to publish locally, if so, stop execution.
-sc --skip-changelog Skip generate changelog
-sgt --skip-git-tag Skip git tag
-nt --npm-tag <npmTag> npm tag

changelog

Params Instructions
-f --file <filename> Specify changelog filename
-rc --releaseCount <releaseCount> Release count
-p --preset <preset> Specify changelog preset

lint-commit

Params Instructions
-p --commitMessagePath <path> The path of the temporary file to which the git message is submitted. The git hook commit-msg will pass this parameter
-r --commitMessageRe <reg> Validate the regular of whether the commit message passes
-e --errorMessage <message> Validation failed to display error messages
-w --warningMessage <message> Validation failed to display warning messages

publish

Params Instructions
-c --check-remote-version Detects whether the remote version of the npm package is the same as the package version to be published locally, and if it is, skip the release
-nt --npm-tag <npmTag> npm tag

Custom Handle

Example

import { changelog, release } from '@varlet/release'

// Do what you want to do...
release()

You can pass in a task that will be called before the publish after the package version is changed.

import { changelog, release } from '@varlet/release'

async function task() {
  await doSomething1()
  await doSomething2()
}

release({ task })

Types

interface PublishCommandOptions {
  preRelease?: boolean
  checkRemoteVersion?: boolean
  npmTag?: string
}
function publish({ preRelease, checkRemoteVersion, npmTag }: PublishCommandOptions): Promise<void>
function updateVersion(version: string): void
interface ReleaseCommandOptions {
  remote?: string
  skipNpmPublish?: boolean
  skipChangelog?: boolean
  skipGitTag?: boolean
  npmTag?: string
  task?(newVersion: string, oldVersion: string): Promise<void>
}
function release(options: ReleaseCommandOptions): Promise<void>

interface ChangelogCommandOptions {
  file?: string
  releaseCount?: number
  preset?:
    | 'angular'
    | 'atom'
    | 'codemirror'
    | 'conventionalcommits'
    | 'ember'
    | 'eslint'
    | 'express'
    | 'jquery'
    | 'jshint'
}
function changelog({ releaseCount, file, preset }?: ChangelogCommandOptions): Promise<void>

const COMMIT_MESSAGE_RE: RegExp
function isVersionCommitMessage(message: string): string | false | null
function getCommitMessage(commitMessagePath: string): string
interface CommitLintCommandOptions {
  commitMessagePath: string
  commitMessageRe?: string | RegExp
  errorMessage?: string
  warningMessage?: string
}
function commitLint(options: CommitLintCommandOptions): void

License

MIT