aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorn-peugnet <n.peugnet@free.fr>2019-11-04 00:14:58 +0100
committern-peugnet <n.peugnet@free.fr>2019-11-04 00:14:58 +0100
commit76aee76beedb1415b31ee4688456ce5193e7b3f5 (patch)
tree2272216c5b0792d2dc784cc233bfa5121d316b0a /Makefile
parentb17bba314c84f3ee012901476417821c3c34d54a (diff)
downloadwcms-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--Makefile48
1 files changed, 33 insertions, 15 deletions
diff --git a/Makefile b/Makefile
index 7ec0c46..10f96d1 100644
--- a/Makefile
+++ b/Makefile
@@ -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