BIN = ./node_modules/.bin SRC_JS = $(shell find src/ -name "*.js") LIB_JS = $(patsubst src/%.js,lib/%.js,$(SRC_JS)) MOCHA_ARGS = --require babel-core/register -t 5000 -b -R spec test/spec.js build: node_modules/ $(LIB_JS) $(LIB_JS): lib/%.js: src/%.js @mkdir -p $(dir $@) @BABEL_ENV=build $(BIN)/babel $< --out-file $@ fast: node_modules/ @BABEL_ENV=build $(BIN)/babel src/ --out-dir lib/ watch: node_modules/ BABEL_ENV=build $(BIN)/babel src/ --out-dir lib/ --watch lint: node_modules/ @$(BIN)/eslint src/ test: lint build @NODE_ENV=test $(BIN)/mocha $(MOCHA_ARGS) test-cov: build @NODE_ENV=test $(BIN)/istanbul cover $(BIN)/_mocha -- $(MOCHA_ARGS) node_modules/: @npm install clean: @rm -rf lib/ tmp/cache/build/ distclean: clean @rm -rf tmp/ node_modules/ release-patch: test @$(call release,patch) release-minor: test @$(call release,minor) release-major: test @$(call release,major) publish: git push --tags origin HEAD:master npm publish define release npm version $(1) -m 'release v%s' endef .PHONY: build fast watch lint test test-cov clean distclean release-patch release-minor release-major publish