Closed2

Dependabot で Yarn v4 の yarn.lock がパースできるか確認した

uasiuasi

この記事を書いている2023年11月21日の時点で、 Dependabot のヘルプページ には Yarn v4 に対応とは書かれていない。

Yarn v3 の yarn.lock のメタデータは

__metadata:
  version: 6
  cacheKey: 8

で、 Yarn v4 では

__metadata:
  version: 8
  cacheKey: 10

となっている。バージョンが異なるのでパースできないかもしれない。以下のパーサのコードを読んでみたがいまいち分からないので、パーサクラスを動かして確認することにした。

https://github.com/dependabot/dependabot-core/blob/v0.236.0/npm_and_yarn/lib/dependabot/npm_and_yarn/file_parser/yarn_lock.rb

uasiuasi

手元に Dependabot の環境を作る。

git clone git@github.com:dependabot/dependabot-core.git
cd dependabot-core
bundle install
cd npm_and_yarn/helpers
npm install

で、パーサクラスを動かすスクリプトを書く。

require 'pathname'
require 'dependabot'
require 'dependabot/npm_and_yarn'

yarn_lock_path = Pathname(ARGV[0])
Dir.chdir(yarn_lock_path.dirname)

f = Dependabot::DependencyFile.new(name: 'yarn.lock', content: File.read('yarn.lock'))
y = Dependabot::NpmAndYarn::FileParser::YarnLock.new(f)

pp y.parsed

で、パース結果を見る。 Yarn v3 でも v4 でも yarn.lock をパースできることを確認した。

このスクラップは2023/11/21にクローズされました