Skip to content

Commit bbaaaa3

Browse files
committed
fix
1 parent 90920c4 commit bbaaaa3

1 file changed

Lines changed: 81 additions & 0 deletions

File tree

scripts/cached-npm-install.sh

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
#!/bin/bash
2+
3+
echo "📦 [cache] npm ci run"
4+
5+
PROJECT_DIR="${PWD}"
6+
NPM_CACHE_ROOT=${NPM_CACHE_ROOT:-${HOME}/.cache/npm-cache}
7+
NODE_ENV=${NODE_ENV:-development}
8+
NODE_VERSION=$(node --version)
9+
10+
echo ""
11+
echo "========================"
12+
echo " project directory: ${PROJECT_DIR}"
13+
echo " npm cache root: ${NPM_CACHE_ROOT}"
14+
echo " node version: ${NODE_VERSION}"
15+
echo " node env: ${NODE_ENV}"
16+
echo "========================"
17+
echo ""
18+
19+
PACKAGE_FILE="${PWD}/package.json"
20+
PACKAGE_LOCK_FILE="${PWD}/package-lock.json"
21+
22+
echo " package-lock file: ${PACKAGE_LOCK_FILE}"
23+
24+
PACKAGES_HASH=$(sha1sum "${PACKAGE_LOCK_FILE}" | cut -d ' ' -f1)
25+
echo " hash: ${PACKAGES_HASH}"
26+
echo ""
27+
28+
PACKAGES_CACHE_DIR="${NPM_CACHE_ROOT}/${NODE_VERSION}-${NODE_ENV}/${PACKAGES_HASH}"
29+
30+
if [ -d "${PACKAGES_CACHE_DIR}" ] && [ -f "${PACKAGES_CACHE_DIR}/package-lock.json" ]; then
31+
if ! cmp --silent "${PACKAGE_FILE}" "${PACKAGES_CACHE_DIR}/package.json"; then
32+
echo "⚠️ WARNING ⚠️ package.json changed:"
33+
echo ""
34+
diff --color "${PACKAGES_CACHE_DIR}/package.json" package.json
35+
echo ""
36+
echo "- if changes could affect [package-lock.json], run: rm -rf node_modules && npm install --package-lock-only && npm run deps"
37+
echo ""
38+
echo "- or copy package.json to cached dir to ignore difference: cp package.json ${PACKAGES_CACHE_DIR}/package.json"
39+
echo ""
40+
fi
41+
42+
echo "🎯 cache found: ${PACKAGES_CACHE_DIR}"
43+
echo ""
44+
45+
shopt -s dotglob
46+
rm -rf node_modules/* && cp -R "${PACKAGES_CACHE_DIR}/node_modules/." node_modules/
47+
shopt -u dotglob
48+
49+
echo " ✅ cache loaded..."
50+
else
51+
echo "⚠️ cache not found: ${PACKAGES_CACHE_DIR}"
52+
53+
echo ""
54+
echo " installing..."
55+
echo ""
56+
57+
npm ci --legacy-peer-deps=false --production=false --cache "${NPM_CACHE_ROOT}" --prefer-offline --no-audit
58+
NPM_CI_EXIT_CODE="$?"
59+
60+
echo ""
61+
62+
if [ "${NPM_CI_EXIT_CODE}" == "0" ]; then
63+
if [ ! -d "${PACKAGES_CACHE_DIR}" ]; then
64+
mkdir -p "${PACKAGES_CACHE_DIR}"
65+
66+
cp -R node_modules "${PACKAGES_CACHE_DIR}/node_modules"
67+
cp package.json "${PACKAGES_CACHE_DIR}/package.json"
68+
cp package-lock.json "${PACKAGES_CACHE_DIR}/package-lock.json"
69+
70+
echo "✅ cache created: ${PACKAGES_CACHE_DIR}"
71+
echo ""
72+
else
73+
echo "⚠️ cache directory already exists..."
74+
echo ""
75+
fi
76+
else
77+
echo "❌ failed to run 'npm ci'"
78+
echo ""
79+
exit 1
80+
fi
81+
fi

0 commit comments

Comments
 (0)