こんにちは、さるまりんです🐒
「毎回、同じコマンド何度も打ってる気がする…」
そんな時に使えるのが
Makefile
!本来はC言語のビルドで使われていた
make
コマンドですが、実はどんな開発にも使える便利ツールなんです。今回は、Web開発でも使えるシンプルな
Makefile
の書き方から始めたいと思います。Makefileってなに?
make
コマンドで実行できる「作業レシピ集」で、自動化したい処理を名前付きで登録しておけます。
毎回コマンドを打たずに
make setup
みたいに一発で複数のことを実行できます!基本の書き方
Makefile
setup:
echo "preparing environment..."
npm install
docker compose up -d
ここでは
setup:
が「ターゲット」です。その下に続く、タブで始まる行が実行コマンドです。
※注意:スペースではなくタブです!
実行は簡単:
make setup
これで、
setup
のecho
, npm install
, docker compose
の順に実行されます。もちろん
package.json
がないとか、Dockerfile
がないとか、なんの準備もしてなければエラーになりますが、それでもエラーとなるまで実行してくれます。よく使うMakefile
例
up:
docker compose up -d
down:
docker compose down
build:
docker compose build
test:
npm run test
lint:
npm run lint
clean:
rm -rf node_modules dist
開発時、これらのコマンドよくやりませんか?
make up
で「開発環境起動」、make down
で「停止」、make test
で「テストを実行」して、make clean
で「いらないファイルを削除」です。ちょっと応用してみます
まずは変数。
Makefile
内ではプログラミング言語のように変数を使うことができます。NAME=さるまりん
hello:
echo "こんにちは、$(NAME)さん!"
変数が使えるとバラバラになってしまいそうなものをまとめて管理できますね。
そして依存関係も書くことができます。
setup: clean install
clean:
rm -rf node_modules
install:
npm install
こうすることで
make setup
とすると、clean
→ install
の順に実行されます!こんな風に
Makefile
でよくやる作業を一括で管理できます。シンプルな文法なので、わかりやすく、効率アップできるかな。JavaScriptやDocker、どんな開発にも使えるという便利なものでした。ちょっとした自動化から始めて、どんどん便利にしていきたいです。今更?そう言われるとそうなのかもしれないです。
僕も開発の中で誰かが用意してくれた
Makefile
でmake clean
とかmake all
とかしてただけなので。(あの頃は本気でC言語でプログラム書いてたな〜)遅すぎることはないと思うので、これからちゃんと覚えて使っていこうと思います。
その過程はここに残していきますね。
読んでくださってありがとうございました。
それではまた!