郷に入れば郷に従って npm/yarn を切り替えるスクリプト

2023/02/21に公開

npm で管理しているリポジトリで yarn add をして混乱することが多々あるので、package-lock.json が存在すれば npm を使い、そうでなければ yarn を使うスクリプト(既出な気がする)

npm2
test -e "package-lock.json"
uses_npm=$?
commands=($@)

if [ $# -gt 0 ]; then
  # npm
  if [ $uses_npm = 0 ]; then
    if [ $1 = "add" ]; then
      commands[0]="install"
    elif [ $1 = "remove" ]; then
      commands[0]="uninstall"
    elif [ $1 = "list" ]; then
      commands[0]="ls"
    fi
  # yarn
  else
    if [ $1 = "install" ] || [ $1 = "i" ]; then
      commands[0]="add"
    elif [ $1 = "uninstall" ]; then
      commands[0]="remove"
    elif [ $1 = "ls" ]; then
      commands[0]="list"
    fi
  fi
fi

if [ $uses_npm = 0 ]; then
  npm ${commands[@]}
else
  yarn ${commands[@]}
fi

npm2 などにして適当な場所に配置し、パスを通すと良さそうです。当初 npm にしたら案の定衝突して怒られました。

PATH=$PATH:~/documents/script/

スクリーンショット

Discussion