Open7
lock ファイルの更新を検知して初回や checkout, pull したときに自動で npm i するようにしたい
npm i といいつつ、私は pnpm v9 を使っている
"pretest*": "[ -f .pnpm-lock.hash ] && sha1sum -c .pnpm-lock.hash || sha1sum pnpm-lock.yaml > .pnpm-lock.hash && pnpm install",
"test": "echo \"Error: no test specified\" && exit 1"
chatgpt に聞いたら .pnpm-lock.hash ファイルを作って管理するといいよって教えてくれた
.pnpm-lock.hash は gitignore に入れても良さそう
うーん、でもこの方法だとすべての script に pre- を作る必要が出てくるなー
yarn v1 にはプラグインとしてあるらしい
2024/10/21 に v2.0.2 がリリースされてる
うーん、もう shell の pnpm() 関数を作って、~/.zshrc とかに書いて、lock ファイルのハッシュ値をローカルで管理するのがいいのでは??
bun もできそうな感じのドキュメントがあるけど bun run で自動的に install はしてくれないな
import { z } from "zod@3.0.0"
とかに書き換えても cache を使うだけでそのバージョンでは実行してくれない
うーん、やはりyarn(もしくは deno )なのだろうか?
pnpm() {
if [[ -f pnpm-lock.yaml && ("$1" == "run" || "$1" == "exec" || "$3" == "run" || "$3" == "exec") ]]; then
# Check and update dependencies if pnpm-lock.yaml changed
if [ -f ~/.pnpm-lock.hash ]; then
sha1sum -c ~/.pnpm-lock.hash || { sha1sum pnpm-lock.yaml >~/.pnpm-lock.hash && pnpm install; }
else
sha1sum pnpm-lock.yaml >~/.pnpm-lock.hash && pnpm install
fi
fi
# Run the actual pnpm command with all arguments
command pnpm "$@"
}
一応こんな感じのスクリプトで、pnpm-lock.yaml が変わったら ~/.pnpm-lock.hash に保存していた hash も更新されて pnpm i が走るようにできた。もうこれでええか