docs/Makefile
BIN=node_modules/.bin
WEBPACK_CMD = node_modules/.bin/webpack
SASS_CMD = sassc
WATCH_CMD = node_modules/.bin/watch
AUTOPREFIXER_CMD = node_modules/.bin/autoprefixer
CLEANCSS_CMD = node_modules/.bin/cleancss
JSON_SASS_CMD = node_modules/.bin/json-sass
BABEL_ARGS = --experimental --source-maps-inline
SRC_JS = $(shell find src -name "*.js")
LIB_JS = $(patsubst src/%.js,lib/%.js,$(SRC_JS))
DOCS_MD = $(shell find docs -name "*.md")
build: build-dev minify-css
build-dev: js webpack css build-docs
# Build application quickly
# Faster on first build, but not after that
fast-build: fast-js build
# Watch for changes
watch: minify-css build-docs
@NODE_ENV=development $(MAKE) -j5 dev-server webpack-server watch-css watch-js
clean:
rm -rf public/flummox/
rm -rf lib/
rm -rf dist/
# Transpile JavaScript using Babel
js: $(LIB_JS)
$(LIB_JS): lib/%.js: src/%.js
mkdir -p $(dir $@)
$(BIN)/babel $< -o $@ $(BABEL_ARGS)
fast-js:
$(BIN)/babel src -d lib $(BABEL_ARGS)
watch-js:
$(BIN)/babel src -d lib $(BABEL_ARGS) -w
build-docs: $(DOCS_MD) js
node lib/scripts/build-docs.js
build-static-site: clean fast-build
rm -rf dist/
node lib/scripts/build-static-site.js
dev-server: $(LIB_JS)
nodemon ./lib/server
webpack-server: $(LIB_JS)
node ./lib/server/webpack
webpack: public/js/flummox/app.js
public/js/flummox/app.js: $(SRC_JS)
$(BIN)/webpack
css: public/flummox/css/app.css
minify-css: css public/flummox/css/app.min.css
public/flummox/css/app.css: sass/app.scss theme
mkdir -p $(dir $@) && sassc -m $< | $(BIN)/autoprefixer > $@
public/flummox/css/app.min.css: public/flummox/css/app.css
$(BIN)/cleancss $< > $@
watch-css:
$(BIN)/watch "mkdir -p public/flummox/css && sassc -m sass/app.scss | $(BIN)/autoprefixer > public/flummox/css/app.css" sass
theme: sass/dependencies/_theme.scss
sass/dependencies/_theme.scss: lib/shared/theme.js
mkdir -p $(dir $@) && $(BIN)/json-sass -i $< \
| sed '1s/^/$$theme: /' \
> $@