126 lines
2.7 KiB
Makefile
126 lines
2.7 KiB
Makefile
|
#
|
|||
|
# Node.js Makefile
|
|||
|
# ================
|
|||
|
#
|
|||
|
# Do not update this file manually – it's maintained separately on GitHub:
|
|||
|
# https://github.com/rowanmanning/makefiles/blob/master/Makefile.node
|
|||
|
#
|
|||
|
# To update to the latest version, run `make update-makefile`.
|
|||
|
#
|
|||
|
|
|||
|
|
|||
|
# Meta tasks
|
|||
|
# ----------
|
|||
|
|
|||
|
.PHONY: test
|
|||
|
|
|||
|
|
|||
|
# Useful variables
|
|||
|
# ----------------
|
|||
|
|
|||
|
NPM_BIN = ./node_modules/.bin
|
|||
|
export PATH := $(NPM_BIN):$(PATH)
|
|||
|
export EXPECTED_COVERAGE := 90
|
|||
|
export INTEGRATION_TIMEOUT := 5000
|
|||
|
export INTEGRATION_SLOW := 4000
|
|||
|
|
|||
|
|
|||
|
# Output helpers
|
|||
|
# --------------
|
|||
|
|
|||
|
TASK_DONE = echo "✓ $@ done"
|
|||
|
|
|||
|
|
|||
|
# Group tasks
|
|||
|
# -----------
|
|||
|
|
|||
|
all: install ci
|
|||
|
ci: verify test
|
|||
|
|
|||
|
|
|||
|
# Install tasks
|
|||
|
# -------------
|
|||
|
|
|||
|
clean:
|
|||
|
@git clean -fxd
|
|||
|
@$(TASK_DONE)
|
|||
|
|
|||
|
install: node_modules
|
|||
|
@$(TASK_DONE)
|
|||
|
|
|||
|
node_modules: package.json
|
|||
|
@npm prune --production=false
|
|||
|
@npm install
|
|||
|
@$(TASK_DONE)
|
|||
|
|
|||
|
|
|||
|
# Verify tasks
|
|||
|
# ------------
|
|||
|
|
|||
|
verify: verify-javascript verify-dust verify-spaces
|
|||
|
@$(TASK_DONE)
|
|||
|
|
|||
|
verify-javascript: verify-eslint verify-jshint verify-jscs
|
|||
|
@$(TASK_DONE)
|
|||
|
|
|||
|
verify-dust:
|
|||
|
@if [ -e .dustmiterc* ]; then dustmite --path ./view && $(TASK_DONE); fi
|
|||
|
|
|||
|
verify-eslint:
|
|||
|
@if [ -e .eslintrc* ]; then eslint . && $(TASK_DONE); fi
|
|||
|
|
|||
|
verify-jshint:
|
|||
|
@if [ -e .jshintrc* ]; then jshint . && $(TASK_DONE); fi
|
|||
|
|
|||
|
verify-jscs:
|
|||
|
@if [ -e .jscsrc* ]; then jscs . && $(TASK_DONE); fi
|
|||
|
|
|||
|
verify-spaces:
|
|||
|
@if [ -e .editorconfig* ] && [ -x $(NPM_BIN)/lintspaces ]; then \
|
|||
|
git ls-files | xargs lintspaces -e .editorconfig && $(TASK_DONE); \
|
|||
|
fi
|
|||
|
|
|||
|
verify-coverage:
|
|||
|
@if [ -d coverage ]; then \
|
|||
|
if [ -x $(NPM_BIN)/nyc ]; then \
|
|||
|
nyc check-coverage --lines $(EXPECTED_COVERAGE) --functions $(EXPECTED_COVERAGE) --branches $(EXPECTED_COVERAGE) && $(TASK_DONE); \
|
|||
|
else \
|
|||
|
if [ -x $(NPM_BIN)/istanbul ]; then \
|
|||
|
istanbul check-coverage --statement $(EXPECTED_COVERAGE) --branch $(EXPECTED_COVERAGE) --function $(EXPECTED_COVERAGE) && $(TASK_DONE); \
|
|||
|
fi \
|
|||
|
fi \
|
|||
|
fi
|
|||
|
|
|||
|
# Test tasks
|
|||
|
# ----------
|
|||
|
|
|||
|
test: test-unit-coverage verify-coverage test-integration
|
|||
|
@$(TASK_DONE)
|
|||
|
|
|||
|
test-unit:
|
|||
|
@if [ -d test/unit ]; then mocha test/unit --recursive && $(TASK_DONE); fi
|
|||
|
|
|||
|
test-unit-coverage:
|
|||
|
@if [ -d test/unit ]; then \
|
|||
|
if [ -x $(NPM_BIN)/nyc ]; then \
|
|||
|
nyc --reporter=text --reporter=html $(NPM_BIN)/_mocha test/unit --recursive && $(TASK_DONE); \
|
|||
|
else \
|
|||
|
if [ -x $(NPM_BIN)/istanbul ]; then \
|
|||
|
istanbul cover $(NPM_BIN)/_mocha -- test/unit --recursive && $(TASK_DONE); \
|
|||
|
else \
|
|||
|
make test-unit; \
|
|||
|
fi \
|
|||
|
fi \
|
|||
|
fi
|
|||
|
|
|||
|
test-integration:
|
|||
|
@if [ -d test/integration ]; then mocha test/integration --timeout $(INTEGRATION_TIMEOUT) --slow $(INTEGRATION_SLOW) $(INTEGRATION_FLAGS) && $(TASK_DONE); fi
|
|||
|
|
|||
|
|
|||
|
# Tooling tasks
|
|||
|
# -------------
|
|||
|
|
|||
|
update-makefile:
|
|||
|
@curl -s https://raw.githubusercontent.com/rowanmanning/makefiles/master/Makefile.node > Makefile.node
|
|||
|
@$(TASK_DONE)
|