jw-pkg/make/js.mk
2018-09-04 13:27:19 +00:00

28 lines
1.2 KiB
Makefile

JAVA ?= /usr/bin/java
JS_MINIFY_FILTER_IN ?= sed 's/console\.[a-z]\+([^)]\+) *;//g'
JS_LOCAL ?= $(wildcard *.js)
JS_SRC ?= $(filter-out %.min.js,$(JS_LOCAL))
JS_GENERATED ?= $(patsubst %.js,%.min.js,$(JS_SRC))
JS_EXTRA_EXTERNS ?=
JS_EXTERNS_DIRS ?= /opt/closure-compiler/share/externs
JS_EXTERNS ?= $(sort $(JS_EXTRA_EXTERNS) jquery-3.3.js)
JS_EXTERN_PATHS ?= $(wildcard $(foreach d,$(JS_EXTERNS_DIRS),$(addprefix $d/,$(JS_EXTERNS))))
JS_MINIFY_OPTS ?= $(addprefix --externs ,$(JS_EXTERN_PATHS)) --compilation_level ADVANCED --strict_mode_input
JS_MINIFY_EXE ?= $(JAVA) -jar /usr/share/java/closure-compiler.jar
JS_MINIFY ?= $(JS_MINIFY_EXE) $(JS_MINIFY_OPTS)
# This is not nice. It requires install-files to be included from elsewhere,
# which is not obvious. OTOH, if it isn't, SOURCE_FILES doesn't do any harm,
# either.
SOURCE_FILES += $(JS_GENERATED)
all: $(JS_GENERATED)
clean: minify.clean
%.min.js: %.js
cat $< | $(JS_MINIFY_FILTER_IN) > $@.filtered
$(JS_MINIFY) $@.filtered > $@.tmp
mv $@.tmp $@
minify.clean:
rm -f $(JS_GENERATED) *.tmp *.filtered