Makefileの生成をChatGPTに任せてみた

Makefile の生成であればChatGPTにお仕事させた方が早いです。

./js 以下にソースとなる js file 群がある。
./js.min に ./js/*.js に対してuglifyjs でminify した js 群を収納したい。
そのようなMakefileを生成して

に対してChatGPTが出した回答は以下

JS_SRC_DIR=./js
JS_MIN_DIR=./js.min
UGLIFYJS=./node_modules/uglify-js/bin/uglifyjs

JS_FILES := $(wildcard $(JS_SRC_DIR)/*.js)
JS_MIN_FILES := $(patsubst $(JS_SRC_DIR)/%.js,$(JS_MIN_DIR)/%.min.js,$(JS_FILES))

.PHONY: all clean

all: $(JS_MIN_FILES)

$(JS_MIN_DIR)/%.min.js: $(JS_SRC_DIR)/%.js
	$(UGLIFYJS) $< -o $@

clean:
	rm -f $(JS_MIN_FILES)

しかも、後続で以下の解説まで補足してもらえました。

ここで、JS_MIN_FILES変数には、$(JS_SRC_DIR)内のすべての.jsファイルに対応する.min.jsファイルのリストを格納します。以下のpatsubst関数が、.jsファイル名から.min.jsファイル名に置換するために使用されます。
$(patsubst $(JS_SRC_DIR)/%.js,$(JS_MIN_DIR)/%.min.js,$(JS_FILES))
このpatsubst関数は、$(JS_SRC_DIR)以下のすべての.jsファイル名を、$(JS_MIN_DIR)以下の.min.jsファイル名に置換します。$<で$(JS_SRC_DIR)の.jsファイルを取得して、$(UGLIFYJS)を使用してminifyしてから、$(JS_MIN_DIR)に.min.jsファイルとして出力します。
このMakefileを実行すると、./js/以下のすべての.jsファイルがminifyされ、./js.min/以下の同名の.min.jsファイルに保存されます。

このレベルの仕事ならChatGPTに任せた方が速いですね

この記事が気に入ったらサポートをしてみませんか?