mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 12:03:31 +01:00
JS_MINIFY_FILTER_IN can be defined to nothing, in which case minifying breaks, so don't minify if there's no filter. As an additional benifit, defining it to the empty string in local.mk allows to use Vim's quickfix window for syntax errors, because there's no intermediate file created. Signed-off-by: Jan Lindemann <jan@janware.com>
35 lines
1.6 KiB
Makefile
35 lines
1.6 KiB
Makefile
JAVA ?= /usr/bin/java
|
|
JS_MINIFY_FILTER_IN ?= sed 's/console\.[a-z]\+([^)]\+) *;//g'
|
|
JS_SRC ?= $(filter-out %.min.js,$(wildcard *.js))
|
|
JS_GENERATED ?= $(patsubst %.js,%.min.js,$(JS_SRC))
|
|
JS_EXTRA_EXTERNS ?=
|
|
JS_CC_BUILD_ROOT ?= $(PROJECTS_DIR)/closure-compiler/contrib/closure-compiler/install-root
|
|
JS_EXTERNS_DIRS ?= $(firstword $(wildcard $(JS_CC_BUILD_ROOT)/$(realpath $(PROJECTS_DIR))/closure-compiler/share/externs /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 $(firstword $(wildcard \
|
|
$(JS_CC_BUILD_ROOT)/usr/share/java/closure-compiler.jar \
|
|
/usr/share/java/closure-compiler.jar \
|
|
) closure-compiler.jar-not-found)
|
|
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
|
|
ifneq ($(JS_MINIFY_FILTER_IN),)
|
|
cat $< | $(JS_MINIFY_FILTER_IN) > $@.filtered
|
|
$(JS_MINIFY) $@.filtered > $@.tmp
|
|
else
|
|
$(JS_MINIFY) $< > $@.tmp
|
|
endif
|
|
mv $@.tmp $@
|
|
|
|
minify.clean:
|
|
rm -f $(JS_GENERATED) *.tmp *.filtered
|