Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80480 views
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 = --stage 0 --loose all --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