1 # This is free and unencumbered software released into the public
2 # domain. To the extent possible under law, the author of this file
3 # waives all copyright and related or neighboring rights to it.
7 javascript
>fallback
= $(firstword $(shell command
-v
$1) $2 $1)
12 npmbindir
= $(NPMROOT
)/node_modules
/.bin
13 .PRECIOUS
: $(npmbindir
)/%
15 from-npm
= $(call javascript
>fallback
,$1,$(npmbindir
)/$1)
17 JSTEST ?
= $(npmbindir
)/jstest
18 JSHINT ?
= $(call from-npm
,jshint
)
20 uglifyjs_npm_package
:= uglify-js
22 UGLIFY ?
= $(call from-npm
,uglifyjs
)
23 UGLIFYFLAGS ?
= --comments \
24 --compress
$(UGLIFYCOMPRESSFLAGS
) \
25 --mangle
$(UGLIFYMANGLEFLAGS
)
27 JSSTAMPDIR ?
= build
/stamp
28 JSHINTDIR ?
= $(JSSTAMPDIR
)
29 JSTESTDIR ?
= $(JSSTAMPDIR
)
32 JSHINTFLAGS
+= $(if
$(JSHINTCONFIG
),--config
$(JSHINTCONFIG
))
33 JSTESTFLAGS
+= $(if
$(JSTESTFORMAT
),--format
$(JSTESTFORMAT
))
36 jshint-stampify
= $(patsubst %.js
,$(JSHINTDIR
)/%.js.lint
,$1)
37 uglify-stampify
= $(patsubst %.js
,$(JSUGLYDIR
)/%.min.js
,$1)
39 javascript
>capture-to-target
= @echo
"$1" && $1 > $@ ||
(cat
$@
&& exit
1)
41 UGLIFY.js
= $(UGLIFY
) $(UGLIFYFLAGS
)
42 LINT.js
= $(JSHINT
) $(JSHINTFLAGS
)
43 TEST.js
= $(JSTEST
) $(JSTESTFLAGS
)
45 $(JSUGLYDIR
)/%.min.js
: %.js |
$(UGLIFY
)
47 $(UGLIFY.js
) < $< > $@
49 $(JSHINTDIR
)/%.js.lint
: %.js |
$(JSHINT
)
54 $(JSTESTDIR
)/%.js.
test: %.js
$(JSTEST_SOURCES
) |
$(JSTEST
)
56 $(call javascript
>capture-to-target
,$(TEST.js
) $<)
59 $(NPM
) install $(firstword $(value
$(@F
)_npm_package
) $(@F
))