Skip to content

Instantly share code, notes, and snippets.

@mathiasleroy
Created June 19, 2015 08:30
Show Gist options
  • Save mathiasleroy/b797bacd837868119701 to your computer and use it in GitHub Desktop.
Save mathiasleroy/b797bacd837868119701 to your computer and use it in GitHub Desktop.
static-website-makefile
#########################################################################
# STATIC WEBSITE MAKEFILE
#########################################################################
# npm install html-minifier -g
# npm install uglifycss -g
# npm install uglify-js -g
project = YOURPROJECTNAME
v = 0.0.1
outdir = ../$(project)/
htmlfiles = ../$(project).html
cssfiles = ../css/font-awesome.min.css\
../css/bootstrap.min.css\
../css/normalize.css\
../css/dc.css
jsfiles = ../js/vendor/jquery-1.11.2.min.js\
../js/bootstrap.min.js\
../js/d3.min.js\
../js/crossfilter.min.js\
../js/dc.min.js\
../js/pace.min.js
datafiles = ../data/be-provinces-unk.geo.json\
../data/public_cases.csv\
../data/public_cases_sample.csv
fontfiles = ../fonts/fontawesome-webfont.woff\
../fonts/fontawesome-webfont.ttf
directories = $(outdir)css\
$(outdir)data\
$(outdir)fonts\
$(outdir)js
#------------------------------------------------------------------------
########################## AUTOMATIC FROM HERE ##########################
#------------------------------------------------------------------------
#########################################################################
# DIR
#########################################################################
dir:
mkdir -p $(outdir)
#########################################################################
# HTML
#########################################################################
$(outdir)index.html: $(htmlfiles)
html-minifier \
--output $@ \
--remove-comments \
--collapse-whitespace \
--remove-style-link-type-attributes \
--remove-script-type-attributes \
--minify-css \
--minify-js \
--minify-urls \
$^
html: $(outdir)index.html
#########################################################################
# CSS
#########################################################################
# $(outdir)$(project).css: $(cssfiles)
# cat $^ > $@
$(outdir)css/$(project).min.css: $(cssfiles)
mkdir -p $(outdir)css
uglifycss $^ > $@
css: $(outdir)css/$(project).min.css
#########################################################################
# JS
#########################################################################
# $(outdir)$(project).js:
# cat js/vendor/jquery-1.11.2.min.js > $@
# echo >> $@ # new line
# cat js/bootstrap.min.js >> $@
# echo >> $@
# cat js/crossfilter.min.js >> $@
# echo >> $@
# cat js/d3.min.js >> $@
# echo >> $@
# cat js/dc.min.js >> $@
# echo >> $@
# cat js/pace.min.js >> $@
$(outdir)js/$(project).min.js: $(jsfiles)
mkdir -p $(outdir)js
uglifyjs $^ --compress --mangle --output $@
js: $(outdir)js/$(project).min.js
#########################################################################
# DATA
#########################################################################
data: $(datafiles)
mkdir -p $(outdir)data
cp $^ $(outdir)data/
#########################################################################
# FONTS
#########################################################################
fonts: $(fontfiles)
mkdir -p $(outdir)fonts
cp $^ $(outdir)fonts/
#########################################################################
# GLOBAL
#########################################################################
$(project): dir html css fonts data js
all: $(project)
clean:
rm $(outdir)index.html -f
rm -rf $(directories)
.PHONY: clean all $(project) css html js fonts data dir
.DEFAULT_GOAL := $(project)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment