在“npm version”命令中跳过预提交挂钩

19

npm version 命令将更改提交到 package.json 文件并创建一个标签。在使用此命令时,是否有一种方法可以防止执行提交钩子?

5个回答

25

我不确定为什么在npm之前没有这个功能,但是我一段时间前做了贡献,并且它已经随npm@5.4.0发布。要使用它,请在您的.npmrc中设置配置选项commit-hooks = false,底层的git调用将在创建版本提交时不运行提交挂钩。如果您只想在单个版本上禁用提交挂钩,可以运行类似于以下内容:

npm version --no-commit-hooks minor

或者:

npm version --commit-hooks false minor

1
文档中说标志是“commit-hooks”,它需要一个布尔值。也许值得更新答案并附上链接:https://docs.npmjs.com/cli/version#commit-hooks。 - loujaybee
3
@loujaybee npm处理CLI标志的方式允许将以“--no-”为前缀的布尔标志解释为将标志设置为“false”的等效形式。出于简洁起见,我选择展示了那种形式。但是,为了更全面地展示其他命令形式,我添加了一个示例。 - faazshift

14
根据 npm命令行文档,你可以使用以下命令来跳过生成 git 标签:
npm --no-git-tag-version version

1
谢谢。文档并没有真正说明“只有”……提交是其中的一步,但文档没有提到如何控制提交行为。可能存在一些未记录的选项或package.json配置。 - esp
如果您想完全避免接触 git,那么这就是正确的答案。使用 --no-commit-hooks 选项时,如果工作目录不干净,它会发出警告。 - Lewis
这个对我有用,而不是被接受的答案。NPM v8.19.2 - Antonio Brandao

2

来自文档

commit-hooks

  • 默认值:true
  • 类型:布尔值

在使用npm version命令时运行git提交钩子。

如果您只想允许这一次运行,请执行以下操作

npm version --no-commit-hooks patch|minor|major

要永久控制此项,请运行以下命令

npm config set commit-hooks false

将以下行添加到您的.npmrc文件中: commit-hooks=false

使用 .npmrc 文件是最好的选择。作为人类,我们很容易忘记包含特殊标志。 - Robert
但是 .npmrc 可能不会包含在存储库中,因此取决于您的使用情况。 - pcnate

2

我尝试了所有上述解决方案,但都没有用。

以下命令效果很好。

git commit -m "message" --no-verify

1
如果您想要增加版本号但不想打标签或提交代码,以下方法适用于Git仓库。(根据您的需求,将patch替换为major或minor)
npm --no-git-tag-version version patch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接