git-subtree-dir: vendor/git.knownelement.com/ExternalVendorCode/bash3boilerplate git-subtree-split: 2e878ec30f0572ad80f34743b6136536cf7c202f
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
# Licensed under MIT.
 | 
						|
# Copyright (2016) by Kevin van Zonneveld https://twitter.com/kvz
 | 
						|
#
 | 
						|
# https://www.npmjs.com/package/fakefile
 | 
						|
#
 | 
						|
# Please do not edit this file directly, but propose changed upstream instead:
 | 
						|
# https://github.com/kvz/fakefile/blob/main/Makefile
 | 
						|
#
 | 
						|
# This Makefile offers convience shortcuts into any Node.js project that utilizes npm scripts.
 | 
						|
# It functions as a wrapper around the actual listed in `package.json`
 | 
						|
# So instead of typing:
 | 
						|
#
 | 
						|
#  $ npm script build:assets
 | 
						|
#
 | 
						|
# you could also type:
 | 
						|
#
 | 
						|
#  $ make build-assets
 | 
						|
#
 | 
						|
# Notice that colons (:) are replaced by dashes for Makefile compatibility.
 | 
						|
#
 | 
						|
# The benefits of this wrapper are:
 | 
						|
#
 | 
						|
# - You get to keep the the scripts package.json, which is more portable
 | 
						|
#   (Makefiles & Windows are harder to mix)
 | 
						|
# - Offer a polite way into the project for developers coming from different
 | 
						|
#   languages (npm scripts is obviously very Node centric)
 | 
						|
# - Profit from better autocomplete (make <TAB><TAB>) than npm currently offers.
 | 
						|
#   OSX users will have to install bash-completion
 | 
						|
#   (http://davidalger.com/development/bash-completion-on-os-x-with-brew/)
 | 
						|
 | 
						|
ifeq ($(shell test -e ./yarn.lock && echo -n yes),yes)
 | 
						|
	RUNNER=yarn
 | 
						|
	INSTALLER=yarn install
 | 
						|
else
 | 
						|
	RUNNER=npm run
 | 
						|
	INSTALLER=npm install
 | 
						|
endif
 | 
						|
 | 
						|
define npm_script_targets
 | 
						|
TARGETS := $(shell \
 | 
						|
	node -e 'for (var k in require("./package.json").scripts) {console.log(k.replace(/:/g, "-"));}'
 | 
						|
		| grep -v -E "^install$$"
 | 
						|
)
 | 
						|
$$(TARGETS):
 | 
						|
	$(RUNNER) $(shell \
 | 
						|
							node -e 'for (var k in require("./package.json").scripts) {console.log(k.replace(/:/g, "-"), k);}'
 | 
						|
								| grep -E "^$(MAKECMDGOALS)\s"
 | 
						|
								| head -n1
 | 
						|
								| awk '{print $$2}'
 | 
						|
							)
 | 
						|
 | 
						|
.PHONY: $$(TARGETS)
 | 
						|
endef
 | 
						|
 | 
						|
$(eval $(call npm_script_targets))
 | 
						|
 | 
						|
# These npm run scripts are available, without needing to be mentioned in `package.json`
 | 
						|
install:
 | 
						|
	$(INSTALLER)
 |