The pre-commit `types` hook never runs for a commit of only `.tsx` or `.jsx` files: its glob `"*.{js,ts, jsx, tsx}"` has spaces
Les mainteneurs répondent en général sous 12 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 1/5
- Temps estimé
- Moins d'une heure
- Accessibilité débutants
- 88/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- git, typescript
- Domaine
- developer-experience
Piste de recherche
Le bogue vient du glob de la commande types sous pre-commit dans lefthook.yml : "*.{js,ts, jsx, tsx}" contient des espaces parasites qui font que les alternatives jsx et tsx ne correspondent à rien. Supprime les espaces pour qu'il corresponde au glob de lint, puis vérifie en ajoutant à l'index uniquement un fichier .tsx avec une erreur de type et en confirmant que yarn tsc s'exécute et bloque le commit. C'est terminé lorsque types s'exécute pour les commits ne contenant que des .tsx et pour ceux ne contenant que des .jsx.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Before submitting a new issue
- I tested using the latest version of the library, as the bug might be already fixed.
- I tested using a supported version of react native.
- I checked for possible duplicate issues, with possible answers.
Bug summary
lefthook.yml's pre-commit types command globs "*.{js,ts, jsx, tsx}". The spaces make two of the brace alternatives jsx and tsx, which no file name matches, so a commit that stages only .tsx or .jsx files skips yarn tsc, and a type error in it is committed. The lint command above it globs "*.{js,ts,jsx,tsx}" and runs.
pre-commit:
parallel: true
commands:
lint:
glob: "*.{js,ts,jsx,tsx}"
run: yarn eslint {staged_files}
types:
glob: "*.{js,ts, jsx, tsx}"
run: yarn tsc
Most of the repository's tests are .tsx files, so a commit of a test alone is the common case.
Library version
main at a37903f (0.0.0-nightly.a37903f)
Environment info
Windows 11 10.0.26300, Node 26.12.1, Yarn 4.9.2, lefthook 2.1.9 (the repository's dev dependency), Git for Windows.
No app or native build is involved: this is the repository's own pre-commit hook.
Steps to reproduce
- Clone
mainand install, which installs the lefthook hooks:git clone https://github.com/nativewind/react-native-css cd react-native-css yarn install - Add a
.tsxfile with a type error and commit it alone:printf 'export const count: number = "one";\n' > src/type-error.tsx git add src/type-error.tsx git commit -m "test: a .tsx file with a type error, committed alone" - Add any
.tsfile beside it and commit again:printf 'export const control = 1;\n' > src/control.ts git add src/control.ts git commit -m "test: a .ts file beside it"
The reproducer branch is main at a37903f with step 2's commit on it, which went in with types skipped.
Expected: types runs in step 2, as it does in step 3, and refuses the commit with the type error.
Actual: step 2 prints types (skip) no matching staged files and commits; step 3 runs types, which reports src/type-error.tsx(1,14): error TS2322 and refuses the commit.
Step 2's output on main at a37903f, Windows 11
╭──────────────────────────────────────╮
│ lefthook v2.1.9 hook: pre-commit │
╰──────────────────────────────────────╯
│ types (skip) no matching staged files
┃ lint ❯
────────────────────────────────────
summary: (done in 6.78 seconds)
✓ lint (6.62 seconds)
╭──────────────────────────────────────╮
│ lefthook v2.1.9 hook: commit-msg │
╰──────────────────────────────────────╯
┃ commitlint ❯
────────────────────────────────────
summary: (done in 1.86 seconds)
✓ commitlint (1.86 seconds)
[repro/554-types-hook-skips-tsx-commits 07d3993] test: a .tsx file with a type error, committed alone
1 file changed, 1 insertion(+)
create mode 100644 src/type-error.tsx
Step 3's output
╭──────────────────────────────────────╮
│ lefthook v2.1.9 hook: pre-commit │
╰──────────────────────────────────────╯
┃ lint ❯
┃ types ❯
src/type-error.tsx(1,14): error TS2322: Type 'string' is not assignable to type 'number'.
exit status 2
────────────────────────────────────
summary: (done in 7.96 seconds)
✓ lint (4.13 seconds)
✗ types (7.89 seconds)
Reproducible example repository
https://github.com/YevheniiKotyrlo/react-native-css/tree/repro/554-types-hook-skips-tsx-commits
- Langage dominant
- TypeScript
- Étoiles
- 166
- Forks
- 45
- Merge moyen
- 17 j 22 h
- PR mergées (30 j)
- 3
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de nativewind/react-native-css
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
nativewind/react-native-css#549 · 2 commentaires ·
Les mainteneurs répondent en général sous 12 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
nativewind/react-native-css#548 · 2 commentaires ·
Les mainteneurs répondent en général sous 12 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
nativewind/react-native-css#545 ·
Les mainteneurs répondent en général sous 12 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
nativewind/react-native-css#544 ·
Les mainteneurs répondent en général sous 12 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
nativewind/react-native-css#543 ·
Les mainteneurs répondent en général sous 12 jours
Toutes les issues de nativewind/react-native-css
Issues similaires
-
Add API: BlockVectra Data APIOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
remotion-dev/remotion#12905 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
supermomonga/paseo-plugin-zcode-provider#83 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
oxidecomputer/skepsis#102 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
voidzero-dev/void#677 ·
Les mainteneurs répondent en général sous 1 jour