acdlite/flummox

View on GitHub
Makefile

Summary

Maintainability
Test Coverage
BABEL_CMD = node_modules/.bin/babel
MOCHA_CMD = node_modules/.bin/mocha
ISTANBUL_CMD = node_modules/.bin/istanbul
ESLINT_CMD = node_modules/.bin/eslint
WEBPACK_CMD = node_modules/.bin/webpack

SRC_JS = $(shell find src -name "*.js")
LIB_JS = $(patsubst src/%.js,lib/%.js,$(SRC_JS))
TEST_JS = $(shell find lib -name "*-test.js")

BABEL_ARGS = --source-maps inline
MOCHA_ARGS = --harmony --require lib/test/init.js $(TEST_JS)

# Build application
build: js browser

clean:
    rm -rf lib/
    rm -rf dist/

# Test
test: lint js
    @NODE_ENV=test $(MOCHA_CMD) $(MOCHA_ARGS)

test-cov: js
    @NODE_ENV=test $(ISTANBUL_CMD) cover node_modules/.bin/_mocha -- $(MOCHA_ARGS)

lint:
    $(ESLINT_CMD) $(SRC_JS)


# Build application quickly
# Faster on first build, but not after that
fast-build: fast-js build

# Publish docs to GitHub Pages
publish-docs:
    git subtree push --prefix docs/dist/flummox origin gh-pages

# Transpile JavaScript using Babel
js: $(LIB_JS)

$(LIB_JS): lib/%.js: src/%.js
    mkdir -p $(dir $@)
    $(BABEL_CMD) $< -o $@ $(BABEL_ARGS)

fast-js:
    $(BABEL_CMD) src -d lib $(BABEL_ARGS)

watch-js:
    $(BABEL_CMD) src -d lib $(BABEL_ARGS) -w

browser: $(SRC_JS)
    mkdir -p dist
    $(WEBPACK_CMD) src/Flux.js dist/flummox.js
    NODE_ENV=production $(WEBPACK_CMD) src/Flux.js dist/flummox.min.js

.PHONY: build clean test test-cov lin fast-build js fast-js watch-js browser