{"meta":{"title":"Création et test de code Node.js","intro":"Découvrez comment créer un flux de travail d’intégration continue (CI) pour générer et tester votre projet Node.js.","product":"GitHub Actions","breadcrumbs":[{"href":"/fr/actions","title":"GitHub Actions"},{"href":"/fr/actions/tutorials","title":"Tutoriels"},{"href":"/fr/actions/tutorials/build-and-test-code","title":"Générer et tester du code"},{"href":"/fr/actions/tutorials/build-and-test-code/nodejs","title":"Node.JS"}],"documentType":"article"},"body":"# Création et test de code Node.js\n\nDécouvrez comment créer un flux de travail d’intégration continue (CI) pour générer et tester votre projet Node.js.\n\n## Introduction\n\nCe guide explique comment créer un workflow d’intégration continue (CI) qui génère et teste du code Node.js. Si vos tests CI réussissent, vous pouvez déployer votre code ou publier un package.\n\n## Prérequis\n\nIl est recommandé d’avoir une compréhension de base du Node.js, du YAML, des options de configuration de workflows et de la création de fichiers de workflow. Pour plus d’informations, consultez l’article suivant :\n\n* [Écriture de workflows](/fr/actions/learn-github-actions)\n* « [Bien démarrer avec Node.js](https://nodejs.org/en/docs/guides/getting-started-guide/) »\n\n## Utilisation d’un modèle de workflow Node.js\n\nPour démarrer rapidement, ajoutez un modèle de workflow au répertoire `.github/workflows` de votre référentiel.\n\nGitHub fournit un modèle de workflow pour Node.js qui devrait fonctionner pour la plupart des projets Node.js. Les sections suivantes de ce guide donnent des exemples de la manière dont vous pouvez personnaliser ce modèle de workflow.\n\n1. Sur GitHub, accédez à la page principale du référentiel.\n\n2. Sous le nom de votre référentiel, cliquez sur **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-play\" aria-label=\"play\" role=\"img\"><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path></svg> Actions**.\n\n   ![Capture d’écran des onglets du référentiel « github/docs ». L’onglet « Actions » est mis en surbrillance avec un encadré orange.](/assets/images/help/repository/actions-tab-global-nav-update.png)\n\n3. Si vous disposez déjà d’un workflow dans votre dépôt, cliquez sur **Nouveau workflow**.\n\n4. La page « Choisir un workflow » présente une sélection de modèles de workflow recommandés. Recherchez « Node.js ».\n\n5. Filtrez la sélection de workflows en cliquant sur **Intégration continue**.\n\n6. Dans le flux de travail « Node.js », cliquez sur **Configurer**.\n\n7. Modifiez le workflow en fonction des besoins. Par exemple, changez les versions de Node que vous voulez utiliser.\n\n8. Cliquez sur **Commiter les changements**.\n\nLe fichier de workflow `node.js.yml` est ajouté au répertoire `.github/workflows` de votre dépôt.\n\n## Spécification de la version de Node.js\n\nLe moyen le plus simple de spécifier une version Node.js consiste à utiliser l’action `setup-node` fournie par GitHub. Pour plus d’informations, consultez [`setup-node`](https://github.com/actions/setup-node/).\n\nL’action `setup-node` prend une version Node.js en tant qu’entrée et configure cette version sur l’exécuteur. L’action `setup-node` recherche une version spécifique de Node.js dans le cache d’outils de chaque exécuteur et ajoute les fichiers binaires nécessaires à `PATH`, qui est conservé pour la suite du travail. L’action `setup-node` est recommandée pour utiliser Node.js avec GitHub Actions, car cela garantit un comportement cohérent sur tous les exécuteurs et toutes les versions de Node.js. Si vous utilisez un exécuteur auto-hébergé, vous devez installer Node.js et l’ajouter à `PATH`.\n\nLe modèle de workflow comprend une stratégie de matrice qui permet de générer et de tester votre code avec les versions de Node.js répertoriées dans `node-version`. Le « x » dans le numéro de version est un caractère générique qui correspond à la dernière version mineure et corrective disponible d’une version donnée. Chaque version de Node.js spécifiée dans le tableau `node-version` crée un travail qui exécute les mêmes étapes.\n\nChaque travail peut accéder à la valeur définie dans le tableau matriciel `node-version` à l’aide du contexte `matrix`. L’action `setup-node` utilise le contexte comme entrée `node-version`. L’action `setup-node` configure chaque travail avec une version de Node.js différente avant de générer et de tester le code. Pour plus d’informations sur les stratégies de matrice et les contextes, consultez [Syntaxe de flux de travail pour GitHub Actions](/fr/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix) et [Référence des contextes](/fr/actions/learn-github-actions/contexts).\n\n```yaml copy\nstrategy:\n  matrix:\n    node-version: ['18.x', '20.x']\n\nsteps:\n- uses: actions/checkout@v5\n- name: Use Node.js ${{ matrix.node-version }}\n  uses: actions/setup-node@v4\n  with:\n    node-version: ${{ matrix.node-version }}\n```\n\nVous pouvez également créer et tester du code avec des versions exactes de Node.js.\n\n```yaml copy\nstrategy:\n  matrix:\n    node-version: ['10.17.0', '17.9.0']\n```\n\nEnfin, vous pouvez générer et tester du code à l’aide d’une seule version de Node.js.\n\n```yaml copy\nname: Node.js CI\n\non: [push]\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v5\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '20.x'\n      - run: npm ci\n      - run: npm run build --if-present\n      - run: npm test\n```\n\nSi vous ne spécifiez pas de version Node.js, GitHub utilise la version par défaut de l’environnement Node.js.\nPour plus d’informations, consultez « [Exécuteurs hébergés par GitHub](/fr/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software) ».\n\n## Installer les dépendances\n\nDes gestionnaires de dépendances npm et Yarn sont installés sur les exécuteurs qui sont hébergés dans GitHub. Vous pouvez utiliser npm et Yarn pour installer des dépendances dans votre workflow avant de générer et de tester votre code. Les exécuteurs Windows et Linux hébergés dans GitHub disposent également de Grunt, Gulp et Bower.\n\nVous pouvez également mettre en cache vos dépendances pour accélérer vos exécutions de workflow. Pour plus d’informations, consultez « [Référence sur la mise en cache des dépendances](/fr/actions/using-workflows/caching-dependencies-to-speed-up-workflows) ».\n\n### Exemple d’utilisation de npm\n\nCet exemple installe les versions dans le `package-lock.json` ou `npm-shrinkwrap.json` fichier et empêche les mises à jour du fichier de verrouillage. L’utilisation de `npm ci` est généralement plus rapide que l’exécution de `npm install`. Pour plus d’informations, consultez [`npm ci`](https://docs.npmjs.com/cli/ci.html) et « [Présentation de `npm ci` pour des builds plus rapides et plus fiables](https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable) ».\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v5\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: npm ci\n```\n\nL’utilisation de `npm install` installe les dépendances définies dans le `package.json` fichier. Pour plus d’informations, consultez [`npm install`](https://docs.npmjs.com/cli/install).\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v5\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: npm install\n```\n\n### Exemple d’utilisation de Yarn\n\nCet exemple installe les dépendances définies dans le `yarn.lock` fichier et empêche les mises à jour du `yarn.lock` fichier. Pour plus d’informations, consultez [`yarn install`](https://yarnpkg.com/en/docs/cli/install).\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v5\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: yarn --frozen-lockfile\n```\n\nVous pouvez également installer les dépendances définies dans le `package.json` fichier.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v5\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: yarn\n```\n\n### Exemple d’utilisation d’un registre privé et de création du fichier .npmrc\n\nVous pouvez utiliser `setup-node` l’action pour créer un fichier local `.npmrc` sur l’exécuteur qui configure le registre et la portée par défaut. L’action `setup-node` accepte également un jeton d’authentification en tant qu’entrée. Celui-ci est utilisé pour accéder à des registres privés ou pour publier des packages de nœuds. Pour plus d’informations, consultez [`setup-node`](https://github.com/actions/setup-node/).\n\nPour vous authentifier auprès de votre registre privé, vous devez stocker votre jeton d’authentification npm en tant que secret. Par exemple, créez un secret de référentiel appelé `NPM_TOKEN`. Pour plus d’informations, consultez « [Utilisation de secrets dans GitHub Actions](/fr/actions/security-guides/using-secrets-in-github-actions) ».\n\nDans l’exemple ci-dessous, le secret `NPM_TOKEN` stocke le jeton d’authentification npm. L’action `setup-node` configure le `.npmrc` fichier pour lire le jeton d'authentification npm dans la `NODE_AUTH_TOKEN` variable d'environnement. Lors de l'utilisation de l'action `setup-node` pour créer un fichier `.npmrc`, vous devez définir la variable d'environnement `NODE_AUTH_TOKEN` avec le secret qui contient votre jeton d'authentification npm.\n\nAvant d'installer les dépendances, utilisez l'action `setup-node` pour créer le `.npmrc` fichier. L’action a deux paramètres d’entrée. Le paramètre `node-version` définit la version Node.js, et le paramètre `registry-url` définit le registre par défaut. Si votre registre de package utilise des étendues, vous devez utiliser le paramètre `scope`. Pour plus d’informations, consultez [`npm-scope`](https://docs.npmjs.com/misc/scope).\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v5\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    always-auth: true\n    node-version: '20.x'\n    registry-url: https://registry.npmjs.org\n    scope: '@octocat'\n- name: Install dependencies\n  run: npm ci\n  env:\n    NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}\n```\n\nL'exemple ci-dessus crée un `.npmrc` fichier avec le contenu suivant :\n\n```shell\n//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}\n@octocat:registry=https://registry.npmjs.org/\nalways-auth=true\n```\n\n### Exemple de mise en cache des dépendances\n\nVous pouvez mettre en cache et restaurer les dépendances à l’aide de l’[action `setup-node`](https://github.com/actions/setup-node).\n\nL’exemple suivant met en cache les dépendances pour npm.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v5\n- uses: actions/setup-node@v4\n  with:\n    node-version: '20'\n    cache: 'npm'\n- run: npm install\n- run: npm test\n```\n\nL’exemple suivant met en cache les dépendances pour Yarn.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v5\n- uses: actions/setup-node@v4\n  with:\n    node-version: '20'\n    cache: 'yarn'\n- run: yarn\n- run: yarn test\n```\n\nL’exemple suivant met en cache les dépendances pour pnpm (v6.10+).\n\n```yaml copy\n# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.\n# Elles sont fournies par un tiers et régies par\n# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.\n# documentation en ligne.\n\n# NOTE: pnpm caching support requires pnpm version >= 6.10.0\n\nsteps:\n- uses: actions/checkout@v5\n- uses: pnpm/action-setup@0609f0983b7a228f052f81ef4c3d6510cae254ad\n  with:\n    version: 6.10.0\n- uses: actions/setup-node@v4\n  with:\n    node-version: '20'\n    cache: 'pnpm'\n- run: pnpm install\n- run: pnpm test\n```\n\nSi vous avez une exigence particulière ou si vous avez besoin d’un contrôle plus précis pour la mise en cache, vous pouvez utiliser l’[action `cache`](https://github.com/marketplace/actions/cache). Pour plus d’informations, consultez « [Référence sur la mise en cache des dépendances](/fr/actions/using-workflows/caching-dependencies-to-speed-up-workflows) ».\n\n## Génération et test de votre code\n\nVous pouvez utiliser les mêmes commandes que celles que vous utilisez localement pour générer et tester votre code. Par exemple, si vous exécutez `npm run build` pour exécuter les étapes de construction définies dans votre `package.json` fichier et `npm test` pour exécuter votre suite de tests, vous devez ajouter ces commandes dans votre fichier de flux de travail.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v5\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    node-version: '20.x'\n- run: npm install\n- run: npm run build --if-present\n- run: npm test\n```\n\n## Empaquetage des données de workflow en tant qu’artefacts\n\nVous pouvez enregistrer les artefacts de vos étapes de génération et de test afin de les examiner une fois le travail terminé. Par exemple, vous devrez peut-être enregistrer des fichiers journaux, des vidages principaux, des résultats de test ou des captures d’écran. Pour plus d’informations, consultez « [Stocker et partager des données avec les artefacts de workflow](/fr/actions/using-workflows/storing-workflow-data-as-artifacts) ».\n\n## Publication dans des registres de paquets\n\nVous pouvez configurer votre workflow pour publier votre package Node.js dans un registre de package une fois vos tests CI réussis. Pour plus d’informations sur la publication dans npm et GitHub Packages, consultez « [Publication de packages Node.js](/fr/actions/publishing-packages/publishing-nodejs-packages) »."}