【问题标题】:Skip pre-commit hook in "npm version" command跳过“npm version”命令中的预提交挂钩
【发布时间】:2017-10-20 00:38:02
【问题描述】:

npm version 将更改提交到 package.json 并创建一个标签。有没有办法防止在使用此命令时执行提交挂钩?

【问题讨论】:

    标签: javascript git npm pre-commit-hook


    【解决方案1】:

    不知道为什么这个功能之前在npm 中不存在,但我不久前贡献了它,因为我自己需要它。它附带npm@5.4.0。要使用它,请在您的.npmrc 中设置配置选项commit-hooks = false,并且在创建版本提交时,底层git 调用将不会运行提交挂钩。如果您只想在单个版本控制上禁用提交挂钩,您可以运行类似于:

    npm version --no-commit-hooks minor
    

    或者:

    npm version --commit-hooks false minor
    

    【讨论】:

    • 文档说标志是'commit-hooks',它需要一个布尔值。可能也值得用链接更新答案:docs.npmjs.com/cli/version#commit-hooks
    • @loujaybee npm 处理 CLI 标志的方式允许解释以 --no- 为前缀的布尔标志,相当于将标志设置为 false。为了简洁起见,我选择展示这种形式。但是我添加了一个示例来演示其他命令形式以获得更大的完整性。
    【解决方案2】:

    根据npm cli docs,您可以通过使用跳过生成 git 标签

    npm --no-git-tag-version version
    

    【讨论】:

    • 谢谢。文档并没有真正说“仅”......提交是其中的步骤之一,但文档对控制提交行为只字未提。可能有一些未记录的选项或 package.json 配置。
    • 如果您想完全避免接触git,这是正确的答案。使用--no-commit-hooks,当工作目录不干净时它会抱怨。
    【解决方案3】:

    来自docs

    提交挂钩

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

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

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

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

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

    npm config set commit-hooks false
    

    或者将此行添加到您的.npmrc 文件中

    commit-hooks=false

    【讨论】:

    • 使用 .npmrc 文件是最好的选择。作为人类,我们很擅长忘记包含特殊标志。
    • 但 .npmrc 可能不包含在 repo 中,因此取决于您的用例
    【解决方案4】:

    我尝试了上述所有解决方案,但对我没有任何效果。

    下面的命令运行良好。

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

    【讨论】:

      【解决方案5】:

      如果您正在寻找没有标签和提交但只是增量,则以下内容在 Git 存储库中对我有用。 (根据您的用例将补丁替换为主要或次要)

      npm --no-git-tag-version version patch
      

      【讨论】:

        猜你喜欢
        • 2011-11-06
        • 1970-01-01
        • 2014-05-10
        • 1970-01-01
        • 2019-06-02
        • 2019-07-07
        • 2021-07-10
        • 1970-01-01
        相关资源
        最近更新 更多