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 | |
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
-rw-r--r-- | Makefile | 48 | ||||
-rw-r--r-- | README.md | 8 | ||||
-rw-r--r-- | package.json | 5 |
3 files changed, 38 insertions, 23 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 @@ -65,17 +65,19 @@ If you want to contribute to the project. 1. Clone the git repository. 2. Install PHP dependencies. - composer install + make vendor 3. _Optionnally_ install and build JS dependencies to get UI enhancements. - npm install && npm run build + make build + +The last two commands can be run at once using only `make`. ## JS development While developing the JS sources it is useful to run webpack in watch mode so that the bundles get built at each file change. To do so, use the following command: - npm run watch + make watch ## Publish a new release diff --git a/package.json b/package.json index b2d41e8..dee017c 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,5 @@ { "name": "wcms", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "watch": "webpack --env dev --watch", - "build": "webpack --env prod" - }, "dependencies": { "codemirror": "^5.49.0" }, |