mirror of
https://github.com/gesquive/slate.git
synced 2024-12-12 08:50:40 +01:00
77 lines
2.3 KiB
Makefile
77 lines
2.3 KiB
Makefile
|
# This makefile should run download all necessary dependencies (including Node itself).
|
||
|
# It will create local ./npm and ./node executables that can be used so you don't need
|
||
|
# to pollute your global system.
|
||
|
|
||
|
OS := $(shell uname | tr '[:upper:]' '[:lower:]')
|
||
|
SITE_NAME="slate"
|
||
|
|
||
|
NODE_VERSION=v7.9.0
|
||
|
NODE_PLATFORM=${OS}-x64
|
||
|
|
||
|
YARN_VERSION=0.23.2
|
||
|
|
||
|
NODE_DOWNLOAD=http://nodejs.org/dist/$(NODE_VERSION)/node-$(NODE_VERSION)-$(NODE_PLATFORM).tar.gz
|
||
|
NODE_HOME=.node-local
|
||
|
NODE_INSTALLED=$(NODE_HOME)/.installed-$(NODE_VERSION)-$(NODE_PLATFORM)
|
||
|
|
||
|
HUGO_DOWNLOAD=https://github.com/spf13/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}
|
||
|
YARN_DOWNLOAD=https://yarnpkg.com/downloads/${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz
|
||
|
|
||
|
VERSION=$(shell git describe --always --tags)
|
||
|
DIRTY=$(shell test -n "`git status --porcelain`" && echo "+CHANGES" || true)
|
||
|
|
||
|
BUILD_DIR=bin
|
||
|
|
||
|
DIST:=find * -type d -exec
|
||
|
|
||
|
default: build
|
||
|
|
||
|
.PHONY: help
|
||
|
help:
|
||
|
@echo 'Management commands for $(SITE_NAME):'
|
||
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
||
|
|
||
|
## Download and peform local install of Node (will not affect anything else on the system)
|
||
|
.PHONY: install-node
|
||
|
install-node: $(NODE_INSTALLED)
|
||
|
bin/node bin/npm $(NODE_INSTALLED):
|
||
|
@echo
|
||
|
@echo === Downloading Node $(NODE_VERSION)... ===
|
||
|
rm -rf $(NODE_HOME)
|
||
|
mkdir -p $(NODE_HOME)
|
||
|
curl $(NODE_DOWNLOAD) | tar xzf - --strip-components=1 --directory $(NODE_HOME)
|
||
|
rm -rf ./bin
|
||
|
mkdir -p ./bin
|
||
|
ln -f -s ../$(NODE_HOME)/bin/node ./bin/
|
||
|
ln -f -s ../$(NODE_HOME)/bin/npm ./bin/
|
||
|
touch $(NODE_INSTALLED)
|
||
|
|
||
|
# Install Node library deps
|
||
|
.PHONY: deps
|
||
|
deps: node_modules/.uptodate ## Install all dependencies
|
||
|
node_modules/.uptodate: bin/npm bin/yarn
|
||
|
@echo
|
||
|
@echo === Installing libraries via Yarn... ===
|
||
|
./bin/yarn
|
||
|
ln -f -s ../node_modules/gulp/bin/gulp.js ./bin/gulp
|
||
|
touch $@
|
||
|
|
||
|
bin/yarn:
|
||
|
@echo
|
||
|
@echo === Installing Yarn ===
|
||
|
rm -rf yarn
|
||
|
mkdir -p yarn
|
||
|
curl -L ${YARN_DOWNLOAD} | tar xzf - --strip-components=1 --directory yarn
|
||
|
ln -f -s ../yarn/bin/yarn.js ./bin/yarn
|
||
|
|
||
|
.PHONY: clean
|
||
|
clean: ## Clean up all dependencies and compiled code
|
||
|
rm -rf .node-local bin node_modules dist data/hash
|
||
|
|
||
|
.PHONY: build
|
||
|
build: install-node deps site ## Compile the website
|
||
|
|
||
|
.PHONY: site
|
||
|
site: ## Only make the site
|
||
|
./bin/gulp build
|