自动化节点依赖项更新

2025-06-08

自动化节点依赖项更新

一个相当大的 Node 应用程序会包含数百个依赖项。保持所有依赖项的更新是开发人员在某个时候需要执行的一项繁琐任务。要么你忽略依赖项的更新,直到你被一组非常老旧的依赖项所困扰,并导致🦹‍♂️安全漏洞阻碍你的开发进度,要么你花费宝贵的应用程序开发时间,以合理的节奏手动测试更新。

让我们看看如何在企业环境中自动化这个过程,假设您有某种 CI/CD 环境和私有 GitHub 存储库。

🥒 成分

  1. 代码单元测试扎实。如果对 UI 组件进行端到端测试和快照测试,则可获得额外加分。
  2. next-update npm 包用于测试您的依赖项是否可以在不破坏测试的情况下进行更新。
  3. hubCLI这是 Git“Hub”的命令行应用程序,可以与你的 GitHub 仓库交互。hub它与 CLI 完全相似git,是一个简易替代品,但增加了与 GitHub 交互的功能。在更新操作后,可以方便地创建 Pull 请求。

📝 食谱

  • npm install next-update --save-dev
    安装 next-update 作为开发依赖项。

  • 脚本部分配置npm脚本dep:updatepackage.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将继续查找所有新软件包。按顺序更新它们,如果测试通过,则保留更新。

  • 下载并安装hubcli

    # 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 上的文章:

  1. 使用 SVG 的单边圆角矩形
  2. Visual Studio Code — 调试模式
  3. 我希望 TypeScript 能够成功。
  4. 我的笔记本电脑里有什么?
  5. CoffeeScript 最受欢迎的功能即将在 JavaScript 中推出
鏂囩珷鏉ユ簮锛�https://dev.to/dennismphil/automate-your-node-dependency-updates-4aga
PREV
放下解构之锤
NEXT
使用 D3 和 Vue 创建交互式地图