如何在“npm install”上安装git hooks?

时间:2016-05-12 07:29:54

标签: node.js git npm githooks npm-install

当有人安装my-package时,我想安装一个postinstall git hook(提示代码)。

我尝试添加"scripts": { "postinstall": "./scripts/install-git-hooks" } 脚本:

npm install

这很有效。当有人运行pre-commit时,他们会安装another-package挂钩。

但是,如果my-package取决于npm install,则为another-package运行postinstall也会运行accumarray脚本,这是不受欢迎的。

避免这种不良影响的最简洁方法是什么?

2 个答案:

答案 0 :(得分:6)

您可以使用http://php.net/manual/en/function.sprintf.php npm模块并将其添加为dev-dependency。您可以在package.json中配置提交之前运行的内容,如下所示:

[...]
"config": {
    "ghooks": {
        "pre-commit": "npm test"
    }
}
[...]

答案 1 :(得分:4)

Hacky,但可能适合你。

诀窍是识别(在脚本中)它是否是NPM安装的子依赖项或根依赖项。只需检查../../package.json是否存在。如果是这样,它是一个子依赖,你应该跳过安装钩子。

应该注意的是,您违反了任何一致的安装规则,这完全违背了安装脚本的精神。这是为了安装客户端钩子,如果你需要强制执行linted,那么这个挂钩是不可信任的,这应该在服务器端完成,它只能拒绝不符合的代码。

这个问题可能会像你提到的那样更好地解决,将其作为自定义安装脚本,并处理额外的通信开销。