如何在安装新的nodejs dependeny之前运行脚本

sar*_*oka 5 node.js npm

我尝试使用preinstall npm脚本,但它只在我将项目签入新空间时运行,并且单独运行"npm i"

在新的依赖项写入package.json 之前,我需要一个运行脚本的解决方案.它不依赖于依赖类型:dev或prod.所有人都需要检查.

例如,当新开发人员加入团队并希望添加具有已知漏洞的新依赖项时,此脚本会在package.json更改之前停止操作,并为开发人员显示警告消息

dmf*_*fay 2

npm 脚本没有办法做到这一点。因此,除非您想实施一项,否则您将不得不调整流程。首先确定您尝试使用依赖安装挂钩解决的所有问题。

您给出了阻止安装依赖项或依赖项版本的示例。这不是问题:这是您问题确定的解决方案。找出实际问题是什么,然后重新评估您的解决方案,看看它是否确实是最合适的措施。

可能(可能)您害怕将易受攻击的代码投入生产。这是您可以使用的问题定义。存在哪些可能的解决方案?您已经确定了黑名单。但不仅您的工具不支持这一点,即使您责任保持黑名单最新。考虑到 Node 世界的发展速度有多快,这足以让几个人全职工作。这甚至还没有涉及将其部署给您的开发人员。

好消息是,这不是唯一的解决方案:您可以建立程序保护措施来防止集成易受攻击的代码。如果您使用的是像 Git 这样的分布式 VCS,拉取请求就在那里:禁用将提交推送到主分支或开发分支,让开发人员在功能分支中工作并提交拉取请求,然后审查这些拉取请求并筛选任何新的依赖项是否存在漏洞当他们出现时。如果您使用的是 SVN 之类的东西,您可以使用带有代码审查的功能分支来达到类似的效果。您的开发人员会额外关注他们的代码,寻找漏洞、优化、边缘情况等;您不必浪费时间筛选没有人尝试集成的依赖项。没有人需要担心获取黑名单的最新副本。对于这个特定的场景,每个人都通过流程解决方案而不是技术解决方案获胜。

如果您出于其他原因想要在安装依赖项时触发脚本,请尝试以相同的方式回到问题的根源。根据节点依赖管理和模块交互的工作方式,您可能会发现最好养成更好的流程习惯。