UNPKG

2.01 kBPlain TextView Raw
1bin = $(shell npm bin)
2sjs = $(bin)/sjs
3browserify = $(bin)/browserify
4jsdoc = $(bin)/jsdoc
5uglify = $(bin)/uglifyjs
6VERSION = $(shell node -e 'console.log(require("./package.json").version)')
7
8# -- Configuration -----------------------------------------------------
9PACKAGE = control.async
10EXPORTS = folktale.control.async
11
12LIB_DIR = lib
13
14TEST_DIR = test/specs-src
15TEST_BLD = test/specs
16TEST_SRC = $(wildcard $(TEST_DIR)/*.sjs)
17TEST_TGT = ${TEST_SRC:$(TEST_DIR)/%.sjs=$(TEST_BLD)/%.js}
18
19
20# -- Compilation -------------------------------------------------------
21dist:
22 mkdir -p $@
23
24dist/$(PACKAGE).umd.js: $(LIB_DIR)/index.js dist
25 $(browserify) $< --standalone $(EXPORTS) > $@
26
27dist/$(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 -------------------------------------------------------------
39bundle: dist/$(PACKAGE).umd.js
40
41minify: dist/$(PACKAGE).umd.min.js
42
43documentation:
44 $(jsdoc) --configure jsdoc.conf.json
45 ABSPATH=$(shell cd "$(dirname "$0")"; pwd) $(MAKE) clean-docs
46
47clean-docs:
48 perl -pi -e "s?$$ABSPATH/??g" ./docs/*.html
49
50clean:
51 rm -rf dist $(TEST_BLD)
52
53test: $(TEST_TGT)
54 node test/node.js
55
56package: 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
66publish: clean $(TGT)
67 npm install
68 npm publish
69
70bump:
71 node tools/bump-version.js $$VERSION_BUMP
72
73bump-feature:
74 VERSION_BUMP=FEATURE $(MAKE) bump
75
76bump-major:
77 VERSION_BUMP=MAJOR $(MAKE) bump
78
79.PHONY: test bump bump-feature bump-major publish package clean documentation