自动化节点依赖项更新
一个相当大的 Node 应用程序会包含数百个依赖项。保持所有依赖项的更新是开发人员在某个时候需要执行的一项繁琐任务。要么你忽略依赖项的更新,直到你被一组非常老旧的依赖项所困扰,并导致🦹♂️安全漏洞阻碍你的开发进度,要么你花费宝贵的应用程序开发时间,以合理的节奏手动测试更新。
让我们看看如何在企业环境中自动化这个过程,假设您有某种 CI/CD 环境和私有 GitHub 存储库。
🥒 成分
- 代码单元测试扎实。如果对 UI 组件进行端到端测试和快照测试,则可获得额外加分。
next-update
npm 包用于测试您的依赖项是否可以在不破坏测试的情况下进行更新。hub
CLI这是 Git“Hub”的命令行应用程序,可以与你的 GitHub 仓库交互。hub
它与 CLI 完全相似git
,是一个简易替代品,但增加了与 GitHub 交互的功能。在更新操作后,可以方便地创建 Pull 请求。
📝 食谱
-
npm install next-update --save-dev
安装 next-update 作为开发依赖项。 -
在脚本部分配置
npm
脚本dep:update
package.json
// package.json { "name": "a-sample-node-project", "version": "0.0.1", "description": "A sample node project", "scripts": { "test": "jest", "start": "node app.js", "dep:update": "next-update" // Configure an npm script }, "devDependencies": { "next-update": "^3.6.0" }, "dependencies": { }, }
-
npm run dep:update
运行脚本。next-update
将继续查找所有新软件包。按顺序更新它们,如果测试通过,则保留更新。 -
下载并安装
hub
cli# download-hub.sh HUB_CLI=/opt/hub-linux/bin/hub if [[ ! -f $HUB_CLI ]]; then wget https://github.com/github/hub/releases/download/v2.12.2/hub-linux-amd64-2.12.2.tgz tar zxvf hub-linux-amd64-2.12.2.tgz rm -rf hub-linux-amd64-2.12.2.tgz /opt/hub-linux mv hub-linux-amd64-2.12.2 /opt/hub-linux fi
-
配置集线器
git config --global --replace-all hub.host github.yourdomain.com git config --global --replace-all hub.protocol git
-
指示🤖机器人打开拉取请求
$HUB_CLI add package.json package-lock.json $HUB_CLI commit -m "🤖 [BOT] Automated dependency update" $HUB_CLI pull-request \ --push \ -m "Pull Request Subject" \ -m "Pull Request Description" \ --no-edit \ --reviewer user-id1,user-id2
-
将此脚本连接到您的 CI/CD 环境中以便每天运行
总结
我们了解了如何检查和更新节点依赖关系,以及如何自动化提交 PR 的过程。如果您的项目是开源的,您可以使用 Greenkeeper 之类的服务。
干杯
请参阅我之前在 Medium 上的文章:
- 使用 SVG 的单边圆角矩形
- Visual Studio Code — 调试模式
- 我希望 TypeScript 能够成功。
- 我的笔记本电脑里有什么?
- CoffeeScript 最受欢迎的功能即将在 JavaScript 中推出