こんにちは、さるまりんです🐒
「毎回、同じコマンド何度も打ってる気がする…」
そんな時に使えるのが
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言語でプログラム書いてたな〜)遅すぎることはないと思うので、これからちゃんと覚えて使っていこうと思います。
その過程はここに残していきますね。
読んでくださってありがとうございました。
それではまた!