DIST_DIR := www SCRIPT_SRC := $(wildcard src/scripts/*.js) SCRIPT_DEST := $(SCRIPT_SRC:src/%=$(DIST_DIR)/%) default: build build: $(DIST_DIR)/index.html $(DIST_DIR)/styles/index.css $(SCRIPT_DEST) watch: @echo 'watching for change' @echo 'press Ctrl+C to stop' @while true; do \ $(MAKE) --silent build; \ sleep 0.5; \ done # pug $(DIST_DIR)/index.html: src/index.pug src/config.json $(wildcard src/*.pug src/*/*.pug) @echo pug: $< ➜ $@ @export ENV="dev"; \ node_modules/.bin/pug --pretty $< --out $(dir $@) -O src/config.json || touch $@ # pug (alpha) $(DIST_DIR)/index.alpha.html: src/index.pug src/config.json $(wildcard src/*.pug src/*/*.pug) @echo pug: $< ➜ $@ @export ENV="alpha"; \ node_modules/.bin/pug --pretty $< --out $(dir $@) -E alpha.html -O src/config.json || touch $@ # pug (paris) $(DIST_DIR)/index.paris.html: src/index.pug src/config.json $(wildcard src/*.pug src/*/*.pug) @echo pug: $< ➜ $@ @export ENV="paris"; \ node_modules/.bin/pug --pretty $< --out $(dir $@) -E paris.html -O src/config.json || touch $@ # pug (nantes) $(DIST_DIR)/index.nantes.html: src/index.pug src/config.json $(wildcard src/*.pug src/*/*.pug) @echo pug: $< ➜ $@ @export ENV="nantes"; \ node_modules/.bin/pug --pretty $< --out $(dir $@) -E nantes.html -O src/config.json || touch $@ # sass $(DIST_DIR)/styles/index.css: src/styles/_index.scss $(wildcard src/*.scss src/*/*.scss src/*/*/*.scss src/*/*/*/*.scss) @echo sass: $< ➜ $@ @node_modules/.bin/node-sass $< $@ --source-map true --source-map-contents || touch $@ # babel $(DIST_DIR)/%.js: src/%.js .babelrc @echo babel: $< ➜ $@ @mkdir -p $(dir $@) @node_modules/.bin/babel $< --out-file $@ --source-maps || touch $@ buildparis: build $(MAKE) $(DIST_DIR)/index.paris.html syncparis: buildparis rsync -rv --exclude '*.html' www/* test-paris@ssh-test-paris.happy-dev.fr:~/www/ rsync --no-R --no-implied-dirs www/index.paris.html test-paris@ssh-test-paris.happy-dev.fr:~/www/index.html rsync -v www/.htaccess test-paris@ssh-test-paris.happy-dev.fr:~/www/ buildnantes: build $(MAKE) $(DIST_DIR)/index.nantes.html syncnantes: buildnantes rsync -rv --exclude '*.html' www/* test-nantes@ssh-test-nantes.happy-dev.fr:~/www/ rsync --no-R --no-implied-dirs www/index.nantes.html test-nantes@ssh-test-nantes.happy-dev.fr:~/www/index.html rsync -v www/.htaccess test-nantes@ssh-test-nantes.happy-dev.fr:~/www/ buildalpha: build $(MAKE) $(DIST_DIR)/index.alpha.html syncalpha: buildalpha rsync -rv --exclude '*.html' www/* alpha@ssh-alpha.happy-dev.fr:~/www/ rsync --no-R --no-implied-dirs www/index.alpha.html alpha@ssh-alpha.happy-dev.fr:~/www/index.html rsync -v www/.htaccess alpha@ssh-alpha.happy-dev.fr:~/www/ sync: syncnantes syncparis syncprod: syncalpha .PHONY: default build watch sync syncprod