-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpnpm.mk
120 lines (101 loc) · 3.79 KB
/
pnpm.mk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#
# All the npm/pnpm related stuff
#
ifndef _MK_PNPM_MK_
_MK_PNPM_MK_ := 1
#$(info ---> .make/pnpm.mk)
ifndef GIT_ROOT
GIT_ROOT := $(shell git rev-parse --show-toplevel 2>/dev/null)
endif
ifndef MK_DIR
MK_DIR := $(GIT_ROOT)/.make
endif
include $(MK_DIR)/os.mk
include $(MK_DIR)/curl.mk
include $(MK_DIR)/nodejs.mk
ifndef PNPM_HOME
export PNPM_HOME := $(HOME)/Library/pnpm
export PATH2 := $(PATH):$(PNPM_HOME)
export PATH := $(PATH2)
undefine PATH2
endif
NPM_BIN := $(call where-is-binary,npm)
NPX_BIN := $(call where-is-binary,npx)
PNPM_BIN := $(call where-is-binary,pnpm)
PNPM_CMD := $(NPM_BIN) pnpm
ifdef PNPM_BIN
PNPM_VERSION := $(shell $(PNPM_BIN) --version 2>/dev/null | cut -d\ -f2)
endif
PNPM_VERSION_EXPECTED := 10.2.1
ifeq ($(PNPM_VERSION),$(PNPM_VERSION_EXPECTED))
PNPM_CHECKED := 1
else
PNPM_CHECKED := 0
$(info pnpm version $(PNPM_VERSION) does not match expected version $(PNPM_VERSION_EXPECTED))
endif
.PHONY: pnpm-check
ifdef PNPM_BIN
ifeq ($(PNPM_CHECKED),1)
pnpm-check: _pnpm-check-info nodejs-check
@#echo "Using pnpm $(PNPM_VERSION), with its config file $(GIT_ROOT)/package.json"
else
pnpm-check: pnpm-force-check
endif
else
pnpm-check: _pnpm-check-info nodejs-check
@printf "$(red)pnpm is not installed, can't run this function, run $(MAKE) pnpm-install-itself$(normal)\n"
exit 1
endif
.PHONY: pnpm-force-check
pnpm-force-check: _pnpm-check-info pnpm-install-itself-first
@printf "$(green)checked pnpm $(PNPM_VERSION_EXPECTED)$(normal)\n"
@printf " - PNPM_BIN=$(PNPM_BIN)\n"
PNPM_VERSION_COMMAND_LINE=$$($(PNPM_BIN) --version 2>/dev/null | cut -d\ -f2) && printf "$(red)Detected pnpm version $${PNPM_VERSION_COMMAND_LINE} on the command line using \"$(PNPM_BIN) --version\"$(normal)\n"
#$(NPX_BIN) install pnpm > /dev/null 2>&1 || true
$(COREPACK_BIN) install --global pnpm@$(PNPM_VERSION_EXPECTED)
@printf " - NPX_BIN=$(NPX_BIN)\n"
PNPM_VERSION_COREPACK=$$(echo Y | $(NPX_BIN) pnpm --version 2>/dev/null | cut -d\ -f2) && printf "$(red)Detected pnpm version $${PNPM_VERSION_COREPACK} on the command line using \"$(NPX_BIN) pnpm --version\"$(normal)\n"
.PHONY: _pnpm-check-info
_pnpm-check-info:
@printf "$(bold)Checking $(green)pnpm $(PNPM_VERSION_EXPECTED)$(normal):\n"
.PHONY: pnpm-install-itself-first
pnpm-install-itself-first: brew-check nodejs-check
@printf "Installing $(bold)$(green)pnpm$(normal) (as configured in your package.json) with corepack:\n"
$(COREPACK_BIN) install
@printf "Upgrading $(bold)$(green)pnpm$(normal) (as configured in your package.json) with corepack:\n"
$(COREPACK_BIN) up
@printf "Installing $(bold)$(green)pnpm $(PNPM_VERSION_EXPECTED)$(normal) with corepack:\n"
set -x ; $(COREPACK_BIN) install --global pnpm@$(PNPM_VERSION_EXPECTED)
set -x ; $(COREPACK_BIN) prepare pnpm@$(PNPM_VERSION_EXPECTED) --activate
set -x ; $(COREPACK_BIN) use pnpm@$(PNPM_VERSION_EXPECTED)
# for some reason the command below causes a symlink error whereas executing the exact
# same command in the shell does not
# set -x ; $(COREPACK_BIN) enable
@printf "Installed $(bold)$(green)pnpm $(PNPM_VERSION_EXPECTED)$(normal)\n"
.PHONY: pnpm-install-prerequisites
ifdef PNPM_BIN
pnpm-install-prerequisites: brew-check nodejs-check
set -x ; $(PNPM_BIN) install -g node-gyp
else
pnpm-install-prerequisites:
endif
.PHONY: pnpm-install-itself
pnpm-install-itself: pnpm-install-itself-first pnpm-install-prerequisites
.PHONY: pnpm-clean
pnpm-clean:
@echo "Cleaning pnpm"
@rm -rf $(GIT_ROOT)/node_modules
.PHONY: pnpm-install
pnpm-install: pnpm-check
cd $(GIT_ROOT) && $(PNPM_BIN) install
.PHONY: pnpm-upgrade-pnpm
pnpm-upgrade-pnpm: $(PNPM_BIN)
$(PNPM_BIN) add -g pnpm
.PHONY: pnpm-update
pnpm-update: pnpm-check pnpm-upgrade-pnpm
cd $(GIT_ROOT) && $(PNPM_BIN) update
.PHONY: pnpm-run-dev
pnpm-run-dev: pnpm-check
cd $(GIT_ROOT) && $(PNPM_BIN) run dev
#$(info <--- .make/pnpm.mk)
endif # _MK_PNPM_MK_