Bug 1: .husky/pre-commit line 21 ran: git diff --name-only --diff-filter=M | xargs -r git add which stages EVERY modified tracked file in the worktree. If a contributor has unstaged WIP elsewhere, it gets silently swept into the commit. Fix: capture `git diff --name-only --cached` before running build/prettier, then only re-add that set. src/generated/ is staged explicitly since build:all regenerates it from spec.types.ts. Bug 2: no repo-local .npmrc meant the maintainer's global artifactory registry leaked into package-lock.json, requiring the Docker regen dance. Committing .npmrc with registry=https://registry.npmjs.org/ overrides user-global config. Docker regen is now optional (still useful for linux-amd64 optionalDeps).
28 lines
1.2 KiB
Text
28 lines
1.2 KiB
Text
# Load Node.js environment for GUI apps (GitHub Desktop, etc.)
|
|
# that don't inherit shell PATH
|
|
export NVM_DIR="$HOME/.nvm"
|
|
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # nvm
|
|
[ -s "$HOME/.fnm/fnm" ] && eval "$(~/.fnm/fnm env)" # fnm
|
|
[ -s "$HOME/.volta/bin/volta" ] && export PATH="$HOME/.volta/bin:$PATH" # volta
|
|
[ -d "/opt/homebrew/bin" ] && export PATH="/opt/homebrew/bin:$PATH" # homebrew (macOS ARM)
|
|
[ -d "/usr/local/bin" ] && export PATH="/usr/local/bin:$PATH" # homebrew (macOS Intel)
|
|
|
|
# Verify no private registry URLs in package-lock.json
|
|
if grep -E '"resolved": "https?://' package-lock.json | grep -v registry.npmjs.org > /dev/null; then
|
|
echo "ERROR: package-lock.json contains non-npmjs.org URLs"
|
|
echo "Run: docker run --rm -i -v \$PWD:/src -w /src node:latest npm i --registry=https://registry.npmjs.org/"
|
|
exit 1
|
|
fi
|
|
|
|
# Capture staged files so we only re-stage what the user intended to commit
|
|
# (avoids sweeping unrelated WIP into the commit)
|
|
STAGED=$(git diff --name-only --cached)
|
|
|
|
npm run build:all
|
|
npm run prettier:fix
|
|
|
|
# Re-stage originally-staged files (prettier may have reformatted them)
|
|
echo "$STAGED" | xargs -r git add
|
|
|
|
# Also stage generated files (regenerated by build:all from spec.types.ts)
|
|
git add src/generated/
|