RenovateでDenoの依存ライブラリをアップデートしてみた

2024-05-15 toranoana.deno #16

あなたは誰

Name: Omochice
Twitter: @omochicemgr
GitHub: Omochice
Hobby: Vim

Denoの依存を追いかけるの辛くないですか?

deno.land/stdの更新頻度

1, 2週間に1回程度リリースされている

Version Date
0.224.0 2024-04-25
0.223.0 2024-04-15
0.222.1 2024-04-11
0.222.0 2024-04-11
0.221.0 2024-03-27
0.220.1 2024-03-15
0.220.0 2024-03-14

手で依存を更新するのは大変なので自動化したい

自動で依存をアップデートするツール

数が多いので端折ります

udd, updater, dmm

  • 正規表現ベースや文字列一致で依存を探す
    • 本来反応して欲しくない部分(コメントアウト等)にも反応してしまう
import { join } from "jsr:@std/path@0.224.0/join";

// https://deno.land/std@0.224.0/path/join.ts // ここにもマッチしてしまう

molt

  • deno_graphで依存グラフを作ってからアップデート確認をする
    • コメントアウトされている部分や文字列に反応しない

Dependabot

denoに対応させられるかは不明

Renovate

  • GitHubのApplicationとして提供されている
  • 正規表現ベース
  • 他のツールのアップデートもできる

作ったやつ

renovate-config

RenovateでDenoの依存関係をアップデートする

  • https://deno.land/
  • npm:, jsr:
  • deno.jsoncのimport map
  • deno.lockはアップデートできない
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "github>Omochice/renovate-config:deno"
  ]
}

実際に動いているところ

chore(deps): update dependency https://deno.land/std to v0.223.0 by renovate[bot] · Pull Request #63 · Omochice/deno-redmine

半年ほど使ってみての所感

困っていること(1/2)

  • Renovateでの deno.land/std/ から jsr:@std/への置き換え
    • パッケージがstdからstd/fooになる
      • std@x.y.z/assertstd/assert@x.y.zになってしまう
      • std@x.y.z/assert/assert.tsstd/assert@x.y.z/assertにしないといけない
        • jsonで表現しないといけない

困っていること(2/3)

困っていること(3/3)

サマリ

  • HEADを追いかけるのは大変
  • アップデートは自動でやりたいね
  • Renovateで更新させてみたら便利だった
    • いくつか不満点もある