Monorepo: git post-checkout hook to verify pnpm version and update dependecies. (#51382)
This commit is contained in:
parent
acc313a9b2
commit
8b7050f9b1
|
@ -0,0 +1,35 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
# '1' is branch
|
||||||
|
CHECKOUT_TYPE=$3
|
||||||
|
redColoured='\033[0;31m'
|
||||||
|
whiteColoured='\033[0m'
|
||||||
|
|
||||||
|
if [ "$CHECKOUT_TYPE" = '1' ]; then
|
||||||
|
canUpdateDependencies='no'
|
||||||
|
|
||||||
|
# Prompt about pnpm versions mismatch when switching between branches.
|
||||||
|
currentPnpmVersion=$( ( command -v pnpm > /dev/null && pnpm -v ) || echo 'n/a' )
|
||||||
|
targetPnpmVersion=$( grep packageManager package.json | sed -nr 's/.+packageManager.+pnpm@([[:digit:].]+).+/\1/p' )
|
||||||
|
if [ "$currentPnpmVersion" != "$targetPnpmVersion" ]; then
|
||||||
|
printf "${redColoured}pnpm versions mismatch: in use '$currentPnpmVersion', needed '$targetPnpmVersion'. Here some hints how to solve this:\n"
|
||||||
|
printf "${redColoured}* actualize environment: 'nvm use && pnpm -v' (the most common case)\n"
|
||||||
|
printf "${redColoured}* install: 'npm install -g pnpm@$targetPnpmVersion'\n"
|
||||||
|
else
|
||||||
|
canUpdateDependencies='yes'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Auto-refresh dependencies when switching between branches.
|
||||||
|
changedManifests=$( ( git diff --name-only HEAD ORIG_HEAD | grep -E '(package.json|pnpm-lock.yaml|pnpm-workspace.yaml|composer.json|composer.lock)$' ) || echo '' )
|
||||||
|
if [ -n "$changedManifests" ]; then
|
||||||
|
printf "${whiteColoured}It was a change in the following file(s) - refreshing dependencies:\n"
|
||||||
|
printf "${whiteColoured} %s\n" $changedManifests
|
||||||
|
|
||||||
|
if [ "$canUpdateDependencies" = 'yes' ]; then
|
||||||
|
pnpm install --frozen-lockfile
|
||||||
|
else
|
||||||
|
printf "${redColoured}Skipping dependencies refresh. Please actualize pnpm version and execute 'pnpm install --frozen-lockfile' manually.\n"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
2
.npmrc
2
.npmrc
|
@ -1,3 +1,5 @@
|
||||||
; adding this as npm 7 automatically installs peer dependencies but pnpm does not
|
; adding this as npm 7 automatically installs peer dependencies but pnpm does not
|
||||||
auto-install-peers=true
|
auto-install-peers=true
|
||||||
strict-peer-dependencies=false
|
strict-peer-dependencies=false
|
||||||
|
; See https://github.com/pnpm/pnpm/pull/8363 (we adding the setting now, to not miss when migrating to pnpm 9.7+)
|
||||||
|
manage-package-manager-versions=true
|
||||||
|
|
Loading…
Reference in New Issue