11ifeq ($(COREPACK_ENABLE_DOWNLOAD_PROMPT ) ,)
2- COREPACK_ENABLE_DOWNLOAD_PROMPT := 0
2+ export COREPACK_ENABLE_DOWNLOAD_PROMPT := 0
33endif
44
55# # NodeJS cache path (default: .cache/node)
@@ -9,7 +9,7 @@ NODEJS_CACHE_PATH ?= $(PROJECT_CACHE_PATH)/node
99# # NodeJS version manager used to install node (asdf, nvm, ...)
1010NODEJS_VERSION_MANAGER ?= $(.NODEJS_VERSION_MANAGER )
1111
12- # # NodeJS package manager (npm,pnpm,yarn,yarn-berry)
12+ # # NodeJS package manager (npm,pnpm,yarn,yarn-berry,bun )
1313NODEJS_PACKAGE_MANAGER ?=
1414# Detect nodejs package manager
1515ifeq ($(NODEJS_PACKAGE_MANAGER ) ,)
@@ -24,6 +24,9 @@ ifeq ($(NODEJS_PACKAGE_MANAGER),)
2424 else ifneq ($(wildcard pnpm-lock.yaml),)
2525 NODEJS_PACKAGE_MANAGER := pnpm
2626 NODEJS_PACKAGE_MANAGER_COMMAND := pnpm
27+ else ifneq ($(wildcard bun.lock bun.lockb),)
28+ NODEJS_PACKAGE_MANAGER := bun
29+ NODEJS_PACKAGE_MANAGER_COMMAND := bun
2730 else
2831 NODEJS_PACKAGE_MANAGER := npm
2932 NODEJS_PACKAGE_MANAGER_COMMAND := npm
@@ -77,11 +80,6 @@ ifeq ($(NODEJS_PACKAGE_MANAGER),yarn-berry)
7780 else
7881 NODEJS_INSTALL := yarn install
7982 endif
80- # Yarn berry cache
81- ifneq ($(call filter-false,$(CI)),)
82- export YARN_CACHE_FOLDER ?= $(PROJECT_CACHE_PATH)/yarn
83- export YARN_ENABLE_GLOBAL_CACHE ?= false
84- endif
8583else ifeq ($(NODEJS_PACKAGE_MANAGER),yarn)
8684# Yarn
8785 NODEJS_RUN := yarn run
@@ -95,11 +93,6 @@ else ifeq ($(NODEJS_PACKAGE_MANAGER),yarn)
9593 else
9694 NODEJS_INSTALL := yarn install
9795 endif
98- # Yarn cache
99- ifneq ($(call filter-false,$(CI)),)
100- export YARN_CACHE_FOLDER ?= $(PROJECT_CACHE_PATH)/yarn
101- export YARN_ENABLE_GLOBAL_CACHE ?= false
102- endif
10396else ifeq ($(NODEJS_PACKAGE_MANAGER),pnpm)
10497# PNPM
10598 NODEJS_RUN := pnpm run
@@ -113,11 +106,20 @@ else ifeq ($(NODEJS_PACKAGE_MANAGER),pnpm)
113106 else
114107 NODEJS_INSTALL := pnpm install --no-frozen-lockfile
115108 endif
116- # PNPM cache
117- ifneq ($(call filter-false,$(CI)),)
118- PNPM_CONFIG_CACHE ?= $(PROJECT_CACHE_PATH)/pnpm
119- endif
120109export PNPM_CONFIG_CACHE
110+ else ifeq ($(NODEJS_PACKAGE_MANAGER),bun)
111+ # Bun
112+ NODEJS_RUN := bun run
113+ # Lockfile
114+ NODEJS_LOCKFILE := bun.lock bun.lockb
115+ # State file
116+ NODEJS_STATEFILE := node_modules/.bun.lock
117+ # Bun frozen mode
118+ ifneq ($(call filter-false,$(NODEJS_FROZEN)),)
119+ NODEJS_INSTALL := bun install --frozen-lockfile
120+ else
121+ NODEJS_INSTALL := bun install
122+ endif
121123else
122124# NPM should be used
123125 NODEJS_RUN := npm run
@@ -131,21 +133,9 @@ else
131133 else
132134 NODEJS_INSTALL := npm install
133135 endif
134- # NPM cache
135- ifneq ($(call filter-false,$(CI)),)
136- NPM_CONFIG_CACHE ?= $(PROJECT_CACHE_PATH)/npm
137- endif
138136export NPM_CONFIG_CACHE
139137endif
140138
141- # Configure cypress cache folder (only for CI mode)
142- ifeq ($(CYPRESS_CACHE_FOLDER ) ,)
143- ifneq ($(call filter-false,$(CI)),)
144- CYPRESS_CACHE_FOLDER := $(PROJECT_CACHE_PATH)/cypress
145- endif
146- endif
147- export CYPRESS_CACHE_FOLDER
148-
149139# Create make cache directory
150140$(NODEJS_CACHE_PATH ) :
151141 $(Q ) ${MKDIRP} $(NODEJS_CACHE_PATH )
@@ -170,7 +160,7 @@ node-dependencies: node-setup $(NODEJS_STATEFILE)
170160#
171161# Setup node
172162#
173- # This will install node and npm
163+ # This will install node and the configured package manager
174164#
175165.PHONY : node-setup
176166node-setup : $(NODEJS_CACHE_PATH ) /node-version
@@ -191,7 +181,7 @@ endif
191181endif
192182
193183# Try installing package manager
194- ifneq ($(NODEJS_PACKAGE_MANAGER ) ,npm)
184+ ifneq ($(filter $( NODEJS_PACKAGE_MANAGER ) ,npm) , )
195185# Only for asdf we have to reshim after corepack
196186 $(Q)if ! $(NODEJS_PACKAGE_MANAGER_COMMAND) -v &>/dev/null; then \
197187 $(call log,info,"[NodeJS] Install $(NODEJS_PACKAGE_MANAGER)...",1); \
0 commit comments