Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 7 additions & 11 deletions .github/action/setup-node/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,21 @@ inputs:
runs:
using: composite
steps:
- name: Get Node.js version from volta
# Extracts the major version from the last version range in engines.node (e.g. >=22.0.0 <23.0.0 || >=24.0.0 <25.0.0 => 24)
# This allows the CI to always use the latest declared LTS without changing the workflow for each new LTS
- name: Get Node.js LTS major version from engines (last range)
shell: bash
run: echo "NODE_VERSION=$(jq -r .volta.node package.json)" >> $GITHUB_ENV

- name: Get npm version from volta
shell: bash
run: echo "NPM_VERSION=$(jq -r .volta.npm package.json)" >> $GITHUB_ENV
run: |
NODE_RANGE=$(jq -r .engines.node package.json | awk -F ' *\\|\\| *' '{print $NF}')
NODE_MAJOR=$(echo "$NODE_RANGE" | grep -oE '[0-9]+' | head -1)
echo "NODE_VERSION=$NODE_MAJOR" >> $GITHUB_ENV

- name: Setup Node.js
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
with:
registry-url: "https://registry.npmjs.org"
node-version: ${{ env.NODE_VERSION || 'lts/*' }}

- name: Setup npm version
if: ${{ env.NPM_VERSION }}
shell: bash
run: npm install -g npm@${{ env.NPM_VERSION }}
Comment on lines -26 to -29
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pourquoi supprimer cette parti car c'est le point essentiel pour que la step de check package lock fonction le fait d'avoir toujours la même version de npm pour tous, node étant plus secondaire.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Car j'utilise la version npm que node apporte.
Le soucis qu'on a eu était qu'on est passé de node 22 à node 24 ce qui a provoqué des breaking change sur la nouvelle version majeure npm apportée.
Là comme on gère correctement la version de node, pas besoin de s'embêter avec la version npm selon moi.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

il faut fixer la bonne version de npm pour les user de volta du coup

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ca c'est fait, j'ai passé la version volta en :

  • node : 24.11.0
  • npm : 11.6.1 (version par défaut livrée avec cette version de node)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

du coup au niveau engine cela veux dire qu'on l'on ne peux plus utiliser node 22.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pas de range pour la version de npm, il faut fixer un numéro de version, car sinon on prend le risque d'avoir une version de fix de npm qui change la génération du package lock comme ce fu le cas entre la version 11.6.0 et 11.6.1
https://github.com/npm/cli/releases/tag/v11.6.1
npm/cli#8579

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je suis plutôt pour les ranges, au final, c'est peut-être l'outil de vérification du lock qui faudrait revoir. il faudrait regarder comment c'est fait sur d'autres projets Open Source mais figer une version de npm, je ne suis pas fan

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

l'outil de vérification du lock ne fait rien de plus que prend un snap du package-lock d'exécuter la commande npm i [--ignore-script --package-lock-only et de comparer le package-lock avec le snap précédent.
S'il n'y a pas de diff alors le package.json et package-lock son synchro sinon il fail et indique de mettre à jours le package lock via un npm i.

sauf que celons la version de npm utiliser il peux y avoir des différences dans la génération du package-lock comme ce fu le cas entre la version 11.6.0 et 11.6.1 ou il au fix un truc qui a pour conséquence que package-lock générer en 11.6.0 et n'est plus le que même que si on le génère en 11.6.1

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ailleurs ils ne s'amusent à définir de version de npm tout court 😅 https://github.com/facebook/react/blob/main/packages/react/package.json#L49 https://github.com/react-hook-form/react-hook-form/blob/master/package.json#L137 https://github.com/mui/material-ui/blob/master/package.json#L178

pour par que la clé engine sert à définir pour qu'elle version de node la lib et compatible, alors pour nos lib front cela na aucun intérêt mais pour des lib back la par contre sa change tous


- name: Check package
if: inputs.check-package
run: npm run package:check
Expand Down
7 changes: 7 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ git switch -c nom-de-ma-branche

3. **Soumettre une Pull Request :** Une fois que vous êtes satisfait de vos modifications, soumettez une pull request vers la branche principale du projet.

## Gestion de la version de Node.js

Ce projet utilise deux méthodes pour définir la version de Node.js :

- **Le champ `engines.node` dans le `package.json`** définit la plage de versions de Node.js supportées par le projet (par exemple : ">=22.0.0 <23.0.0 || >=24.0.0 <25.0.0"). Cette plage permet d'avertir les utilisateurs si leur version de Node.js n'est pas compatible.
- **Volta** (via le bloc `volta` dans le `package.json`) permet de verrouiller la version de Node.js et de npm utilisée en local pour garantir un environnement reproductible lors du développement. Volta installe automatiquement la version recommandée lors de l'utilisation de node ou de npm.

## Règles de Commit

### Convention de Commit
Expand Down
Loading