From c945264590ca1b8a154affd7e264272cbd8ccc01 Mon Sep 17 00:00:00 2001 From: rory Date: Mon, 23 Feb 2026 09:40:11 -0800 Subject: [PATCH 1/2] Create wrapper script to retry prettier without cache --- package.json | 2 +- scripts/runPrettier.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100755 scripts/runPrettier.sh diff --git a/package.json b/package.json index faf0d36824e00..cd8d0fc23af7b 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "shellcheck": "./scripts/shellCheck.sh", "spell": "cspell --color **/*", "spell-changed": "cspell --color --no-must-find-files", - "prettier": "prettier --experimental-cli --write .", + "prettier": "./scripts/runPrettier.sh", "prettier-changed": "prettier --experimental-cli --write --ignore-unknown $(git diff --diff-filter=AMR --name-only origin/main HEAD)", "prettier-watch": "onchange \"**/*.{js,mjs,ts,tsx}\" -- prettier --experimental-cli --write --ignore-unknown {{changed}}", "print-version": "echo $npm_package_version", diff --git a/scripts/runPrettier.sh b/scripts/runPrettier.sh new file mode 100755 index 0000000000000..5bd93000000fd --- /dev/null +++ b/scripts/runPrettier.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# +# Prettier can intermittently fail due to a stale cache. This wrapper runs +# prettier once, and if it fails, clears the cache and retries. + +set -eu + +TOP="$(realpath "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)/..")" +readonly TOP +source "${TOP}/scripts/shellUtils.sh" + +declare -r PRETTIER_CACHE_DIR="${TOP}/node_modules/.cache/prettier" + +function run_prettier() { + npx prettier --experimental-cli --write . +} + +function clear_cache() { + if [[ -d "${PRETTIER_CACHE_DIR}" ]]; then + info "Clearing prettier cache at ${PRETTIER_CACHE_DIR}" + rm -rf "${PRETTIER_CACHE_DIR}" + fi +} + +function main() { + if run_prettier; then + success "Prettier finished successfully" + return + fi + + error "Prettier failed — clearing cache and retrying" + clear_cache + + if run_prettier; then + success "Prettier finished successfully after clearing cache" + else + error "Prettier failed again after clearing cache" + exit 1 + fi +} + +main "$@" From 14af1b40edf9cf55f7e1b8ae39b4541cd59a613a Mon Sep 17 00:00:00 2001 From: rory Date: Mon, 23 Feb 2026 11:13:53 -0800 Subject: [PATCH 2/2] Forward CLI flags through prettier wrapper Co-authored-by: Cursor --- scripts/runPrettier.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/runPrettier.sh b/scripts/runPrettier.sh index 5bd93000000fd..5df1552115da9 100755 --- a/scripts/runPrettier.sh +++ b/scripts/runPrettier.sh @@ -12,7 +12,7 @@ source "${TOP}/scripts/shellUtils.sh" declare -r PRETTIER_CACHE_DIR="${TOP}/node_modules/.cache/prettier" function run_prettier() { - npx prettier --experimental-cli --write . + npx prettier --experimental-cli --write . "$@" } function clear_cache() { @@ -23,7 +23,7 @@ function clear_cache() { } function main() { - if run_prettier; then + if run_prettier "$@"; then success "Prettier finished successfully" return fi @@ -31,7 +31,7 @@ function main() { error "Prettier failed — clearing cache and retrying" clear_cache - if run_prettier; then + if run_prettier "$@"; then success "Prettier finished successfully after clearing cache" else error "Prettier failed again after clearing cache"