DIST_DIR := www SCRIPT_SRC := $(wildcard src/scripts/*.js) SCRIPT_DEST := $(SCRIPT_SRC:src/%=$(DIST_DIR)/%) default: build clean: git clean -fXd -e !src/config.pug install: node_modules copy_lib copy_samples submodules submodules: git submodule init git submodule update --recursive --remote 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 serve: node server # npm node_modules: npm install # vendor lib copy_lib: @node copy_lib.js # samples copy_samples: src/config.json src/config.json: @cp -n src/config.sample.json src/config.json # 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 (prod) $(DIST_DIR)/index.prod.html: src/index.pug src/config.json $(wildcard src/*.pug src/*/*.pug) @echo pug: $< ➜ $@ @export ENV="prod"; \ node_modules/.bin/pug --pretty $< --out $(dir $@) -E prod.html -O src/config.json || touch $@ # sass $(DIST_DIR)/styles/index.css: src/styles/index.scss $(wildcard 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 $@ buildprod: build $(MAKE) $(DIST_DIR)/index.prod.html deploy: pull install build pull: git pull sync: buildprod rsync -rv www/* staging-app@ssh-staging-app.happy-dev.fr:~/staging-app.happy-dev.fr/ --exclude=www/index.html --exclude=www/index.prod.html rsync --no-R --no-implied-dirs www/index.prod.html staging-app@ssh-staging-app.happy-dev.fr:~/staging-app.happy-dev.fr/index.aaa.html rsync -v www/.htaccess staging-app@ssh-staging-app.happy-dev.fr:~/staging-app.happy-dev.fr/ .PHONY: default install submodules copy_lib copy_samples build watch serve clean sync buildprod pull deploy