UNPKG

1.87 kBPlain TextView Raw
1default: build
2
3BINDIR = bin
4SRCDIR = src
5LIBDIR = lib
6TESTDIR = test
7DISTDIR = dist
8
9SRC = $(shell find "$(SRCDIR)" -name "*.coffee" -type f | sort)
10LIB = $(SRC:$(SRCDIR)/%.coffee=$(LIBDIR)/%.js)
11TEST = $(shell find "$(TESTDIR)" -name "*.coffee" -type f | sort)
12
13COFFEE=node_modules/.bin/coffee --js
14MOCHA=node_modules/.bin/mocha --compilers coffee:coffee-script-redux/register -r coffee-script-redux/register -r test-setup.coffee -u tdd -R dot
15CJSIFY=node_modules/.bin/cjsify --minify
16
17all: build test
18build: $(LIB)
19bundle: $(DISTDIR)/bundle.js
20
21$(LIBDIR)/%.js: $(SRCDIR)/%.coffee
22 @mkdir -p "$(@D)"
23 $(COFFEE) <"$<" >"$@"
24
25$(DISTDIR)/bundle.js: $(LIB)
26 @mkdir -p "$(@D)"
27 $(CJSIFY) -x ProjectName $(shell node -pe 'require("./package.json").main') >"$@"
28
29.PHONY: phony-dep release test loc clean
30phony-dep:
31
32VERSION = $(shell node -pe 'require("./package.json").version')
33release-patch: NEXT_VERSION = $(shell node -pe 'require("semver").inc("$(VERSION)", "patch")')
34release-minor: NEXT_VERSION = $(shell node -pe 'require("semver").inc("$(VERSION)", "minor")')
35release-major: NEXT_VERSION = $(shell node -pe 'require("semver").inc("$(VERSION)", "major")')
36release-patch: release
37release-minor: release
38release-major: release
39
40release: build test
41 @printf "Current version is $(VERSION). This will publish version $(NEXT_VERSION). Press [enter] to continue." >&2
42 @read nothing
43 node -e "\
44 var j = require('./package.json');\
45 j.version = '$(NEXT_VERSION)';\
46 var s = JSON.stringify(j, null, 2) + '\n';\
47 require('fs').writeFileSync('./package.json', s);"
48 git commit package.json -m 'Version $(NEXT_VERSION)'
49 git tag -a "v$(NEXT_VERSION)" -m "Version $(NEXT_VERSION)"
50 git push --tags origin HEAD:master
51 npm publish
52
53test:
54 $(MOCHA) $(TEST)
55$(TESTDIR)/%.coffee: phony-dep
56 $(MOCHA) "$@"
57
58loc:
59 @wc -l "$(SRCDIR)"/*
60
61clean:
62 @rm -rf "$(LIBDIR)" "$(DISTDIR)"