中文 |
English
Varlet Release
是一个用于发布所有包、生成变更日志和检测 commit message
的工具,依赖于 pnpm
。
pnpm add @varlet/release -D
# 发布所有包并生成变更日志
npx vr release
# 指定远程仓库名称
npx vr release -r https://github.com/varletjs/varlet-release
# or
npx vr release --remote https://github.com/varletjs/varlet-release
# 仅生成变更日志
npx vr changelog
# 指定变更日志文件名
npx vr changelog -f changelog.md
# or
npx vr changelog --file changelog.md
# 检测 commit message
npx vr lint-commit -p .git/COMMIT_EDITMSG
# 发布到 npm,可以在 ci 中执行
npx vr publish
参数 |
说明 |
-r --remote <remote> |
指定远程仓库名称 |
-s --skip-npm-publish |
跳过 npm 发布 |
-c --check-remote-version |
检测 npm 包的远程版本是否与要在本地发布的包版本相同,如果是,则停止执行 |
-sc --skip-changelog |
跳过生成变更日志 |
-sgt --skip-git-tag |
跳过 git tag |
-nt --npm-tag <npmTag> |
npm tag |
参数 |
说明 |
-f --file <filename> |
指定变更日志文件名 |
-rc --releaseCount <releaseCount> |
发布数量 |
参数 |
说明 |
-p --commitMessagePath <path> |
提交 git message 的临时文件路径。git 钩子 commit-msg 会传递这个参数。 |
-r --commitMessageRe <reg> |
验证 commit message 是否通过的正则 |
-e --errorMessage <message> |
验证失败展示的错误信息 |
-w --warningMessage <message> |
验证失败展示的提示信息 |
参数 |
说明 |
-c --check-remote-version |
检测npm包的远程版本是否与要在本地发布的包版本相同,如果是,则跳过发布 |
-nt --npm-tag <npmTag> |
npm tag |
import { release, changelog } from '@varlet/release'
// Do what you want to do...
release()
你可以传入一个 task
,在包版本更改后,在发布之前会调用 task
。
import { release, changelog } from '@varlet/release'
async function task() {
await doSomething1()
await doSomething2()
}
release({ task })
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
}
function changelog({ releaseCount, file }?: 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
MIT