From 7b809c09b4477a040903fc4c727c91d58f504260 Mon Sep 17 00:00:00 2001 From: Azir-11 <2075125282@qq.com> Date: Sat, 16 May 2026 16:01:02 +0800 Subject: [PATCH] feat(packages): check git staging area before showing commit prompts --- packages/scripts/src/commands/git-commit.ts | 9 ++++++++- packages/scripts/src/locales/index.ts | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/scripts/src/commands/git-commit.ts b/packages/scripts/src/commands/git-commit.ts index 35c0df56..f63c019f 100644 --- a/packages/scripts/src/commands/git-commit.ts +++ b/packages/scripts/src/commands/git-commit.ts @@ -17,7 +17,14 @@ interface PromptObject { * @param lang */ export async function gitCommit(lang: Lang = 'en-us') { - const { gitCommitMessages, gitCommitTypes, gitCommitScopes } = locales[lang]; + const { gitCommitMessages, gitCommitNoStaged, gitCommitTypes, gitCommitScopes } = locales[lang]; + + const stagedFiles = await execCommand('git', ['diff', '--cached', '--name-only']); + + if (!stagedFiles) { + console.error(gitCommitNoStaged); + process.exit(1); + } const typesChoices = gitCommitTypes.map(([value, msg]) => { const nameWithSuffix = `${value}:`; diff --git a/packages/scripts/src/locales/index.ts b/packages/scripts/src/locales/index.ts index 74321d08..52328c4b 100644 --- a/packages/scripts/src/locales/index.ts +++ b/packages/scripts/src/locales/index.ts @@ -37,6 +37,7 @@ export const locales = { ['release', '发布项目新版本'], ['other', '其他的变更'] ] as [string, string][], + gitCommitNoStaged: `${bgRed(' 错误 ')} ${red('暂存区没有文件,请先使用 git add 添加文件后再提交!')}`, gitCommitVerify: `${bgRed(' 错误 ')} ${red('git 提交信息必须符合 Conventional Commits 标准!')}\n\n${green( '推荐使用命令 `pnpm commit` 生成符合 Conventional Commits 标准的提交信息。\n获取有关 Conventional Commits 的更多信息,请访问此链接: https://conventionalcommits.org' )}` @@ -75,6 +76,7 @@ export const locales = { ['release', 'release project'], ['other', 'other changes'] ] as [string, string][], + gitCommitNoStaged: `${bgRed(' ERROR ')} ${red('No files in staging area, please use git add to stage files first!')}`, gitCommitVerify: `${bgRed(' ERROR ')} ${red('git commit message must match the Conventional Commits standard!')}\n\n${green( 'Recommended to use the command `pnpm commit` to generate Conventional Commits compliant commit information.\nGet more info about Conventional Commits, follow this link: https://conventionalcommits.org' )}`