Skip to content

feat: verify package-lock.json UTD (up to date) & audited #4598

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 36 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
41664a4
feat: we'd like to provide a quick check regarding
mfranzke Jul 22, 2025
eeeea2d
chore: worth a try
mfranzke Jul 22, 2025
cd63f49
Revert "chore: worth a try"
mfranzke Jul 22, 2025
45e3a05
Reapply "chore: worth a try"
mfranzke Jul 22, 2025
9ea15af
refactor: incorrect parameter
mfranzke Jul 22, 2025
5f01b94
refactor: corrected package-lock file
mfranzke Jul 22, 2025
52c9f51
chore: another try
mfranzke Jul 22, 2025
0e558d1
Revert "chore: another try"
mfranzke Jul 22, 2025
ae9a456
chore: another try
mfranzke Jul 22, 2025
3e6295f
Revert "chore: another try"
mfranzke Jul 22, 2025
024e42e
Reapply "chore: another try"
mfranzke Jul 22, 2025
a8fd3d4
Revert "Reapply "chore: another try""
mfranzke Jul 22, 2025
b990c9f
Reapply "Reapply "chore: another try""
mfranzke Jul 22, 2025
d0c57f7
refactor: modified this file
mfranzke Jul 22, 2025
8d59270
Revert "Reapply "Reapply "chore: another try"""
mfranzke Jul 22, 2025
21dfc4e
Reapply "Reapply "Reapply "chore: another try"""
mfranzke Jul 22, 2025
c8e1a6a
Revert "Reapply "Reapply "Reapply "chore: another try""""
mfranzke Jul 22, 2025
db0ebcd
Reapply "Reapply "Reapply "Reapply "chore: another try""""
mfranzke Jul 22, 2025
921422d
chore: another try
mfranzke Jul 22, 2025
c02b633
Revert "chore: another try"
mfranzke Jul 22, 2025
b79000f
chore: another try
mfranzke Jul 22, 2025
0fb88bb
refactor: another try
mfranzke Jul 22, 2025
b729283
refactor: necessary update
mfranzke Jul 22, 2025
2029b99
Merge branch 'main' into feat-verify-package-lock-utd
mfranzke Jul 22, 2025
3439669
refactor: regenerated package lock file
mfranzke Jul 22, 2025
dc4b0a2
refactor: generalize this
mfranzke Jul 23, 2025
a5499b0
refactor: removed that package again
mfranzke Jul 23, 2025
e5e312b
refactor: get rid of the dependency
mfranzke Jul 23, 2025
632641d
Merge branch 'main' into feat-verify-package-lock-utd
mfranzke Jul 24, 2025
d73952b
refactor: ensure that npm audit has fixed dependencies
mfranzke Jul 24, 2025
38dae5a
Update pre-push
mfranzke Aug 1, 2025
1c82d8a
refactor: conditionally run based on the package manager
mfranzke Aug 2, 2025
6c0e346
Update .husky/pre-push
mfranzke Aug 2, 2025
49031db
Update .config/.lintstagedrc.js
mfranzke Aug 2, 2025
5018003
Update .husky/pre-push
mfranzke Aug 2, 2025
97efc60
Update .husky/pre-push
mfranzke Aug 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .config/.lintstagedrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,7 @@ export default {
'stylelint.config.*': 'stylelint --validate --allow-empty-input',
// And elsewhere we don't, compare to https://github.com/stylelint/stylelint/pull/8009
'*.{css,scss}': 'stylelint --fix --allow-empty-input --no-validate',
'*.{js,ts,tsx,jsx,mjs,cjs}': 'xo --fix'
'*.{js,ts,tsx,jsx,mjs,cjs}': 'xo --fix',
// ensure that security vulnerabilities are fixed before committing
'package-lock.json': 'npm audit fix'
};
78 changes: 78 additions & 0 deletions .husky/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Configuration: Define checks as functions for better maintainability
# Each check function should:
# - Define a PATTERN variable for file matching
# - Define a COMMAND variable for the command to run
# - Define a DESCRIPTION variable for user feedback

check_npm_files() {
PATTERN='^(package\.json|package-lock\.json)$'
COMMAND='npm install --package-lock-only --ignore-scripts'
DESCRIPTION='package.json or package-lock.json – please run npm install to update dependencies'
}

check_pnpm_files() {
PATTERN='^(package\.json|pnpm-lock\.yaml)$'
COMMAND='pnpm install --lockfile-only --ignore-scripts'
DESCRIPTION='package.json or pnpm-lock.yaml – please run pnpm install to update dependencies'
}

# List of all check functions
# Detect the lock file to determine the package manager
if [ -f "pnpm-lock.yaml" ]; then
CHECK_FUNCTIONS=(
"check_pnpm_files"
)
elif [ -f "package-lock.json" ]; then
CHECK_FUNCTIONS=(
"check_npm_files"
)
else
echo "No lock file detected for pnpm or npm. Aborting pre-push checks."
exit 1
fi

# Check for changes in specified files before pushing and run corresponding commands
## Get the upstream branch
UPSTREAM=$(git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null || echo "")
if [ -z "$UPSTREAM" ]; then
echo "No upstream configured, detecting default branch."
# Try to detect the default branch from origin/HEAD
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
if [ -z "$DEFAULT_BRANCH" ]; then
echo "Could not detect default branch, falling back to 'main'."
DEFAULT_BRANCH="main"
fi
UPSTREAM="$DEFAULT_BRANCH"
fi

## Get the list of files changed between upstream and HEAD
FILES=$(git diff --name-only "$UPSTREAM"..HEAD)

## Check each pattern and run corresponding command
for check_function in "${CHECK_FUNCTIONS[@]}"; do
# Call the check function to set variables
$check_function

if echo "$FILES" | grep -qE "$PATTERN"; then
echo "Detected changes in $DESCRIPTION"

## Run the corresponding command
$COMMAND

if [ $? -ne 0 ]; then
echo "Command failed: $COMMAND. Aborting push."
exit 1
fi

# Check for file modifications after running the command
MODIFIED_FILES=$(git diff --name-only)
if [ -n "$MODIFIED_FILES" ]; then
echo "Detected file modifications after running $COMMAND:"
echo "$MODIFIED_FILES"
echo "Please stage the changes before pushing."
exit 1
fi
fi
done

echo "No monitored file changes detected. Skipping checks."
Loading