はじめに
現在、私は WordPress・Flutter・Laravel などで開発しています。Flutter Laravelは始めたばかりですが・・
プロジェクトごとに異なる開発環境(Vagrant、Docker、wp-env、Flutterなど)を使用していると、起動方法を毎回思い出すのが手間になってきました。
# Vagrant の場合
vagrant up
# Laravel Sail の場合
./vendor/bin/sail up -d
# wp-env の場合
npm run wp-env start
# Flutter の場合
flutter run
プロジェクトを切り替えるたびに「起動コマンド・・・」となるのがストレスになっていたので、判別&実行をまとめて自動化するシェルスクリプトを作りました。
起動対象を自動判別して実行するシェルスクリプト
以下のような project-up.sh スクリプトを作成しどこかにおいて、自在に起動/停止ができます。
#!/bin/bash
# project-up.sh
COMMAND=$1
if [ -z "$COMMAND" ]; then
echo "Usage: $0 [up|halt]"
exit 1
fi
if [ -f Vagrantfile ]; then
echo "Vagrantfile が見つかりました。Vagrant 用の処理を実行します。"
case "$COMMAND" in
up) vagrant up ;;
halt) vagrant halt ;;
*) echo "Unknown command: $COMMAND"; exit 1 ;;
esac
exit 0
elif [ -f .wp-env.json ]; then
echo ".wp-env が見つかりました。wp-env 用の処理を実行します。"
case "$COMMAND" in
up) npm run wp-env start ;;
halt) npm run wp-env stop ;;
*) echo "Unknown command: $COMMAND"; exit 1 ;;
esac
exit 0
elif [ -f pubspec.yaml ]; then
echo "pubspec.yaml が見つかりました。Flutter 用の処理を実行します。"
case "$COMMAND" in
up) flutter run ;;
halt) echo "[Flutter] flutter run は Ctrl+C で停止してください。" ;;
*) echo "Unknown command: $COMMAND"; exit 1 ;;
esac
exit 0
elif [ -f "./docker-compose.yml" ] && [ -x "./vendor/bin/sail" ]; then
echo "Laravel Sail 用の構成が確認できました。"
case "$COMMAND" in
up)
echo "🟢 コンテナを起動します..."
./vendor/bin/sail up -d
echo "🛠 マイグレーションを実行します..."
./vendor/bin/sail artisan migrate
;;
halt)
echo "🔴 コンテナを停止します..."
./vendor/bin/sail down
;;
*) echo "Unknown command: $COMMAND"; exit 1 ;;
esac
exit 0
else
echo "対応する環境ファイルが見つかりませんでした。"
exit 1
fi
使い方
シェルスクリプトに実行権限を与えて実行するだけです。
chmod +x ./project-up.sh
# 開発環境を起動したいとき
./project-up.sh up
# 停止したいとき
./project-up.sh halt
方法
各種環境に特有のファイル(Vagrantfile, .wp-env.json, pubspec.yaml, docker-compose.yml + sail)の存在をチェックして判別。
なので他にもある場合には同じ形式で増やせば良いと思います。
より快適に使うために alias の設定
起動ファイルの名称を覚えていられません!! ./project-up.sh
以下のようにエイリアスを設定するとさらに快適です。
たとえば .zshrc や .bashrc に以下を追記しましょー
alias up='./project-up.sh up'
alias halt='./project-up.sh halt'
設定後は
source ~/.bash_profile
設定後は適用させます。自分の場合は.bash_profileに記述。ターミナル再起動でも。
これで up halt で実行できるはずです!
経緯
もともと10数年前にvccwというWordpressの開発環境を構築してくれるVagrantベースのものを使っていたのですが(今も昔のものはそのまま使っているのですが)今時はwp-envを使っているということであれやこれやと増えてきてしまったので面倒だ・・・
ってなったわけです。
使い方というか
自分はVS code でプロジェクトを開いて
プロジェクトルートでターミナルを起動して
そこで「up」!
すれば判別してくれてそれぞれのプロジェクトを起動してくれるって感じです