MAINTAINERCLEANFILES = Makefile.in htmldir = $(localstatedir)/www/html nodemodulesdir = node_modules nextoutdir = out nextbuilddir = .next # List of paths relative to the build output directory. # outindexpage = index.html outserverpage = server.html outjsmodulesdir = _next outimagesdir = pngs # The build output directory listed under EXTRA_DIST contains the files to # include in the release/source tarball. # # It is recommended to use the following command to regenerate the file list # as files get added/removed: # # find . \ # -mindepth 1 -maxdepth 1 \ # -not \( -name node_modules -prune \) \ # -not \( -name *git* -prune \) \ # -not \( -name *husky* -prune \) \ # -not \( -name public -prune \) \ # -not \( -name *[Mm]ake* -prune \) \ # | sed -E 's@^./(.+)$@\1 \\@' # # The find command: # * ignores ./node_modules directory, # * ignores git related files, # * ignores husky related files # * ignores ./public directory # * ignores make related files, and # * removes leading "./" and append "\" # # Note: This only works when we want to include all files within the listed # subdirectories. It is recommended to run a similar find command on a # subdirectory to skip undesired files in the subdirectory. # EXTRA_DIST = \ $(nextoutdir) \ next.config.js \ next-env.d.ts \ tsconfig.json \ theme \ styles \ .lintstagedrc.json \ README.md \ package.json \ lib \ .prettierrc.json \ types \ components \ pages \ .eslintrc.json \ commitlint.config.js \ .eslintignore \ .env \ package-lock.json # Blank target; the build output directory should be usable as-is. $(nextoutdir): ; # This target is for maintainers only; do not execute during CI/CD. # $(nodemodulesdir): -@echo "Install node modules (dependencies) prior to building." npm install --no-package-lock --ignore-scripts # This target is for maintainers only; do not execute during CI/CD. In # addition, this target can only be used if the local git repository exists. # # Note: this target must **not** be renamed to the same name as the build # output directory because it will trigger a build during the `make` implicit # call. # .PHONY: build build: $(nodemodulesdir) -@echo "Remove build output files to prepare for rebuild." rm -rf $(nextoutdir) $(nextbuilddir) -@echo "Build web UI." npm run build -@echo "Stage only the build output directory and commit the build output." git reset \ && git add $(nextoutdir) \ && git commit -m "chore: rebuild web UI" install-data-hook: -@echo "Place build output files." (cd $(srcdir)/$(nextoutdir); \ cp -r --no-preserve=mode \ $(outindexpage) $(outserverpage) $(outjsmodulesdir) \ $(DESTDIR)/$(htmldir)/ \ ) -@echo "Create symlink to images to enable borrowing icon etc. without duplicating." (cd $(DESTDIR)/$(htmldir); $(LN_S) skins/alteeve/images $(outimagesdir)) uninstall-hook: -@echo "Remove all installed files of the current module." (cd $(DESTDIR)/$(htmldir); \ rm -rf $(outindexpage) $(outserverpage) $(outjsmodulesdir) $(outimagesdir) \ ) clean-local: -@echo "Clean up node modules." rm -rf $(nodemodulesdir)