diff options
author | n-peugnet <n.peugnet@free.fr> | 2019-11-04 00:14:58 +0100 |
---|---|---|
committer | n-peugnet <n.peugnet@free.fr> | 2019-11-04 00:14:58 +0100 |
commit | 76aee76beedb1415b31ee4688456ce5193e7b3f5 (patch) | |
tree | 2272216c5b0792d2dc784cc233bfa5121d316b0a /Makefile | |
parent | b17bba314c84f3ee012901476417821c3c34d54a (diff) | |
download | wcms-76aee76beedb1415b31ee4688456ce5193e7b3f5.tar.gz wcms-76aee76beedb1415b31ee4688456ce5193e7b3f5.zip |
perf: make optimizations
- run npm and composer only when needed
- include .default.env
- add watch targets
- "make all" builds in dev mode, "make dist" in prod mode
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 48 |
1 files changed, 33 insertions, 15 deletions
@@ -1,17 +1,26 @@ +include .default.env include .env +ENV ?= dev export + PATH := vendor/bin:node_modules/.bin:$(PATH) GIT_VERSION := $(shell git --no-pager describe --always --tags) js_sources := $(wildcard src/*.js) js_bundles := $(js_sources:src/%.js=assets/js/%.bundle.js) -zip_release := $(GIT_VERSION:%=dist/w_cms_%.zip) +zip_release := dist/w_cms_$(GIT_VERSION).zip + +all: vendor build -all: php_dependencies $(js_bundles) +build: $(js_bundles) + +watch: node_modules + webpack --env dev --watch release: release-it +dist: ENV := prod dist: distclean $(zip_release) dist/w_cms_%.zip: all @@ -34,32 +43,41 @@ dist/w_cms_%.zip: all -x "*test*" \ -x "*docs*" -assets/js/%.bundle.js: src/%.js js_dependencies +assets/js/%.bundle.js: src/%.js node_modules @echo "Building JS Bundles..." mkdir -p $(dir $@) - webpack --env prod +ifeq ($(ENV),prod) + webpack $< -o $@ --env prod -p +else + webpack $< -o $@ --env dev +endif .env: cp .default.env .env -php_dependencies: +vendor: composer.json composer.lock @echo "Installing PHP dependencies..." +ifeq ($(ENV),prod) composer install --no-dev --prefer-dist +else + composer install +endif -php_clean: - @echo "Cleaning PHP..." - rm -rf vendor - -js_dependencies: +node_modules: package.json package-lock.json @echo "Installing JS dependencies..." npm install -js_clean: +clean: buildclean + @echo "Cleaning PHP..." + rm -rf vendor @echo "Cleaning JS..." rm -rf node_modules - rm -rf $(js_bundles) - -clean: php_clean js_clean -distclean: +distclean: buildclean rm -rf dist + +buildclean: + @echo "Cleaning build artifacts..." + rm -rf $(js_bundles) + +.PHONY: all build watch release dist clean distclean buildclean |