javascript
package.jsonのdependenciesのバージョンをpinするシェルスクリプト
Renovateでは依存関係をpinすることを推奨していますし、yarnではdefaultSemverRangePrefixによりデフォルトでバージョンを固定化出来ます。
しかしこういった設定をする前にあれこれインストールしてしまって、後からpinするの、ちょっと面倒ですよね。renovateが勝手にやってくれるはずなんですが、なんかやってくれないし。
下記はそれをやってくれるスクリプトです。
#!/bin/bash
while read -r package current_version; do
latest_version=$(yarn info "$package" version --json | jq -r '.children.Version')
jq --arg package "$package" --arg latest_version "$latest_version" '.dependencies[$package] = $latest_version' package.json > tmp.json && mv tmp.json package.json
done < <(jq -r '.dependencies | to_entries[] | "\(.key) \(.value)"' package.json)
注意点として下記があります。
jq
が必要ですdependencies
を対象としています- 2行目・4行目の
dependencies
をdevDependencies
に書き換えればdevDependencies
を対象に出来ます
- 2行目・4行目の
yarn
を利用していますpnpm
の場合はlistが使えると思います- その場合2行目の
jq
のコマンドもおそらく変える必要があります