1 | bin = $(shell npm bin)
|
2 | sjs = $(bin)/sjs
|
3 | browserify = $(bin)/browserify
|
4 | jsdoc = $(bin)/jsdoc
|
5 | uglify = $(bin)/uglifyjs
|
6 | VERSION = $(shell node -e 'console.log(require("./package.json").version)')
|
7 |
|
8 | # -- Configuration -----------------------------------------------------
|
9 | PACKAGE = control.async
|
10 | EXPORTS = folktale.control.async
|
11 |
|
12 | LIB_DIR = lib
|
13 |
|
14 | TEST_DIR = test/specs-src
|
15 | TEST_BLD = test/specs
|
16 | TEST_SRC = $(wildcard $(TEST_DIR)/*.sjs)
|
17 | TEST_TGT = ${TEST_SRC:$(TEST_DIR)/%.sjs=$(TEST_BLD)/%.js}
|
18 |
|
19 |
|
20 | # -- Compilation -------------------------------------------------------
|
21 | dist:
|
22 | mkdir -p $@
|
23 |
|
24 | dist/$(PACKAGE).umd.js: $(LIB_DIR)/index.js dist
|
25 | $(browserify) $< --standalone $(EXPORTS) > $@
|
26 |
|
27 | dist/$(PACKAGE).umd.min.js: dist/$(PACKAGE).umd.js
|
28 | $(uglify) --mangle - < $< > $@
|
29 |
|
30 | $(TEST_BLD)/%.js: $(TEST_DIR)/%.sjs
|
31 | mkdir -p $(dir $@)
|
32 | $(sjs) --readable-names \
|
33 | --module alright/macros \
|
34 | --output $@ \
|
35 | $<
|
36 |
|
37 |
|
38 | # -- Tasks -------------------------------------------------------------
|
39 | bundle: dist/$(PACKAGE).umd.js
|
40 |
|
41 | minify: dist/$(PACKAGE).umd.min.js
|
42 |
|
43 | documentation:
|
44 | $(jsdoc) --configure jsdoc.conf.json
|
45 | ABSPATH=$(shell cd "$(dirname "$0")"; pwd) $(MAKE) clean-docs
|
46 |
|
47 | clean-docs:
|
48 | perl -pi -e "s?$$ABSPATH/??g" ./docs/*.html
|
49 |
|
50 | clean:
|
51 | rm -rf dist $(TEST_BLD)
|
52 |
|
53 | test: $(TEST_TGT)
|
54 | node test/node.js
|
55 |
|
56 | package: documentation bundle minify
|
57 | mkdir -p dist/$(PACKAGE)-$(VERSION)
|
58 | cp -r docs dist/$(PACKAGE)-$(VERSION)
|
59 | cp -r lib dist/$(PACKAGE)-$(VERSION)
|
60 | cp dist/*.js dist/$(PACKAGE)-$(VERSION)
|
61 | cp package.json dist/$(PACKAGE)-$(VERSION)
|
62 | cp README.md dist/$(PACKAGE)-$(VERSION)
|
63 | cp LICENCE dist/$(PACKAGE)-$(VERSION)
|
64 | cd dist && tar -czf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)
|
65 |
|
66 | publish: clean $(TGT)
|
67 | npm install
|
68 | npm publish
|
69 |
|
70 | bump:
|
71 | node tools/bump-version.js $$VERSION_BUMP
|
72 |
|
73 | bump-feature:
|
74 | VERSION_BUMP=FEATURE $(MAKE) bump
|
75 |
|
76 | bump-major:
|
77 | VERSION_BUMP=MAJOR $(MAKE) bump
|
78 |
|
79 | .PHONY: test bump bump-feature bump-major publish package clean documentation
|