node.js - 在安装新的 Node js 依赖项之前如何运行脚本

标签 node.js npm

我尝试使用预安装的 npm 脚本,但它仅在我将项目 check out 到新空间并独立运行“npm i”时运行

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

例如,当一个新的开发者加入团队,想要添加新的存在已知漏洞的依赖时,这个脚本会在 package.json 改变之前停止 Action ,并向开发者显示警告消息

最佳答案

npm 脚本无法做到这一点。所以,除非你觉得 implementing one你将不得不调整你的过程。首先确定您尝试使用依赖安装 Hook 解决的所有问题。

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

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

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

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

关于node.js - 在安装新的 Node js 依赖项之前如何运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46601398/

相关文章:

javascript - 在 Javascript (node js) 中将带有 & 符号的字符串转换为键值映射

node.js - Sequelize-typescript 'HasManyCreateAssociationMixin' 不是函数

javascript - Node.js 说它不能加载 sqlite3 模块,但无论如何

node.js - NPM 导致段错误

node.js - Plugins[0][1] 必须是一个对象、false 或 undefined

javascript - 使用 Promise.mapSeries 等待回调

javascript - 如何欺骗 Node.js 将 .js 文件加载为 ES6 模块?

node.js - 将 HDR 照片从 iPhone 上传到网络 - GPS 数据丢失

node.js - 在 Windows 10 上使用 npm install -g ionic cordova 安装 ionic 时出错

git - 如何在 heroku 上的 package.json 中将 public bitbucket repo 引用为 npm 模块?