Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
nodejs [Le 23/07/2019, 17:37]
nekdev Ajoute un lien vers le ppa
nodejs [Le 25/05/2025, 13:35] (Version actuelle)
nekdev [Depuis un PPA (dépôts "nodesource")]
Ligne 1: Ligne 1:
 {{tag>​programmation serveur }} {{tag>​programmation serveur }}
----- 
-====== Nodejs ====== 
-**Nodejs** est un logiciel permettant d'​exécuter du [[wpfr>​JavaScript]] côté serveur, contrairement à ce qu'on a l'​habitude de voir avec le javascript côté client. 
  
-L'​avantage d'​utiliser **Nodejs** est que javascript ​permet l'​exécution de tâches asynchrones,​ ce qui peut être pratique dans certaines situations. C'est de plus en plus souvent le cas avec le « nouveau » web qui arrive (html5/​css3,​ etc.).\\ +====== Node.js ====== 
-De plus, **Nodejs** permet de créer des applications « serveur » facilement grâce à des applications tierces qu'il prend en charge via un logiciel similaire à un [[:​gestionnaire de paquets]].+ 
 +**Node.js** est un logiciel permettant d'​exécuter du [[wpfr>​JavaScript]] côté serveur, contrairement à ce qu'on a l'​habitude de voir avec le JavaScript côté client. 
 + 
 +L'​avantage d'​utiliser **Node.js** est que JavaScript ​permet l'​exécution de tâches asynchrones,​ ce qui peut être pratique dans certaines situations. C'est de plus en plus souvent le cas avec le « nouveau » web qui arrive (html5/​css3,​ etc.).\\ 
 +De plus, **Node.js** permet de créer des applications « serveur » facilement grâce à des applications tierces qu'il prend en charge via **[[https://​www.npmjs.com|npm]]**,​ son [[:​gestionnaire de paquets|gestionnaire de dépendances]]. 
 + 
 +<note important>​ 
 +L'​écosystème JavaScript est un milieu en constante et rapide évolution. Attention à l'​actualité des informations que vous trouvez à ce sujet. À la rédaction de ce message, **[[https://​pkg.com/​|Yarn]]** se propose de remplacer **npm**, et **[[https://​bun.sh|Bun]]** propose de remplacer à la fois **Node.js**,​ **npm** et **Yarn**. 
 +</​note>​
  
 ===== Pré-requis ===== ===== Pré-requis =====
Ligne 13: Ligne 18:
     ​     ​
 ===== Installation ===== ===== Installation =====
 +
 +Il existe de nombreuses manières d'​installer **Node.js**. Ubuntu le propose dans ses dépôts officiels et recommande évidemment cette méthode. Mais certaines applications JavaScript requièrent des versions spécifiques de Node.js et/ou de npm, et [[:APT]] (qu'il s'​agisse de [[:PPA]] ou des [[:​dépôts]] officiels d'​Ubuntu) ne convient pas à l'​utilisation de diverses versions spécifiques.
 +
 +Il existe donc plusieurs autres méthodes d'​installation,​ et en particulier des gestionnaires de versions qui permettent l'​installation voire même l'​usage de plusieurs versions de **Node.js** simultanément :
 +  * [[#​au_moyen_du_gestionnaire_de_versions_nvm|nvm]] (//Node Version Manager//)
 +  * [[#​au_moyen_du_gestionnaire_de_versions_n|n]]
 +  * [[https://​docs.brew.sh/​Homebrew-on-Linux|Homebrew]]
 +
 +Il est aussi possible de profiter de l'​environnement [[:Docker]] pour installer les versions de **Node.js**,​ **npm** ou **Yarn** de son choix, en les isolant du système. Dans ce cadre on préfère généralement déployer plus directement et simplement les images des applications qui reposent sur **Node.js** elles-mêmes.
  
 ==== Depuis les dépôts officiels ==== ==== Depuis les dépôts officiels ====
-<note important>​sous Xenialcela installe la précédente ​version ​LTS… 4.2.6 qui est supportée jusqu'à avril 2018</​note>​ + 
-Installer **Nodejs** sous ubuntu est simple, il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer les paquets]] **[[apt>​nodejs,​npm|nodejs npm]]**. ​Vous préfèrerez probablement installer [[#​depuis_un_personal_package_archives_ppa_depots_officiels_nodesource|la version ​que met à disposition l'​équipe ​de NodeJS]].+<note important>​ 
 +Cette méthode n'est recommandée que si vous utilisez **Node.js** pour une application en particuliercompatible avec une version ​de **Node.js** parfois ancienneLes versions d'Ubuntu étant maintenues plus longtemps que certaines versions de **Node.js**,​ il arrive régulièrement que la version proposée dans les dépôts officielles soit déjà abandonnée. 
 + 
 +Si vous avez couramment besoin de **Node.js** ou souhaitez utiliser une version récente, utilisez de préférence un gestionnaire de version, tel que **[[#​au_moyen_du_gestionnaire_de_versions_n|n]]** ou **[[#​au_moyen_du_gestionnaire_de_versions_nvm|nvm]]**. 
 +</​note>​ 
 + 
 +Installer **Node.js** sous ubuntu est simple, il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer les paquets]] **[[apt>​nodejs,​npm|nodejs npm]]**. ​En revanche ​la version ​installée ​de cette manière peut être ancienne et même déjà abandonnée (voir ci-dessus).
  
 === Résumé en ligne de commande=== === Résumé en ligne de commande===
-Le résumé, à saisir dans un [[:​terminal]],​ utilise ici la [[:​commande_shell|commande]] **[[:​apt-get]]** : 
-<​code>​ 
-sudo apt-get update 
-sudo apt-get install nodejs npm 
-</​code>​ 
  
-<note important>​Il m'a fallu ajouter deux liens symboliques ​:+Le résumé, à saisir dans un [[:​terminal]],​ utilise ici la [[:​commande_shell|commande]] **[[:​apt-cli|apt]]** ​:
 <​code>​ <​code>​
-sudo ln -s /​usr/​bin/​nodejs /​usr/​local/​bin/​node +sudo apt update 
-sudo ln -s /​usr/​bin/​npm /​usr/​local/​bin/​npm+sudo apt install nodejs ​npm
 </​code>​ </​code>​
 +
 +Si vous souhaitez [[:​compilation|compiler]] des projets avec **Node.js** il vous faudra [[:​tutoriel:​comment_installer_un_paquet|installer]] **[[apt>​nodejs-dev]]**. Notez que vous n'avez pas besoin de ce paquet pour développer des projets en [[wpfr>​JavaScript]],​ il est utile en revanche si vous comptez développer des modules pour **Node.js**,​ eux-mêmes écrits dans un autre langage (par exemple en C/C++).
 +
 +==== Depuis un PPA (dépôts "​nodesource"​) ​ ====
 +
 +<note important>​Cette méthode n'​offre pas la souplesse ni la facilité d'​utilisation d'un gestionnaire de version dédié, tel que **[[#​au_moyen_du_gestionnaire_de_versions_n|n]]** ou **[[#​au_moyen_du_gestionnaire_de_versions_nvm|nvm]]**. En outre elle peut complexifier et rendre imprévisibles les mises à jour majeures du système.
 </​note>​ </​note>​
-<note important>​Ou alors installer le paquet **[[apt>​nodejs-legacy|nodejs-legacy]]**  qui installera ​les liens nécessaires ​à la compatibilité des conventions de nommage+ 
 +[[https://​chrislea.com/​2014/​07/​09/​joining-forces-nodesource/​|Chris Lea]] et [[https://​nodesource.com/​blog/​chris-lea-joins-forces-with-nodesource|NodeSource]] se sont associés pour maintenir un [[:PPA]] avec des versions stables de **Node.js**, souvent plus récentes que celles des dépôts officiels. 
 + 
 +Chaque version de **Node.js** possède un script d'​installation ​qui ajoute le dépôt correspondant au gestionnaire de paquet. 
 +On les trouve ici : https://​github.com/​nodesource/​distributions 
 + 
 +=== Pour installer Node.js 22.x (LTS : active jusqu'​en oct. 2025, support jusqu'à fin avril 2027) : === 
 + 
 +C'​est ​la dernière version stable recommandée pour vos applications en production. 
 <​code>​ <​code>​
-sudo apt install ​nodejs-legacy+curl -fsSL https://​deb.nodesource.com/​setup_22.x | sudo -E bash - && \ 
 +sudo apt-get install -y nodejs
 </​code>​ </​code>​
-</​note>​ 
  
-Si vous souhaitez [[:​compilation|compiler]] des projets avec **Nodejs** il vous faudra [[:​tutoriel:​comment_installer_un_paquet|installer]] **[[apt>​nodejs-dev]]**Notez que vous n'avez pas besoin de ce paquet pour développer des projets en Javascript, il est utile en revanche si vous comptez développer des modules pour Nodejs, eux-mêmes écrits dans un autre langage (par exemple en C/C++).+=== Pour installer ​Node.js 24.x : ===
  
-==== Au moyen du gestionnaire de versions n ==== 
-**n**, cf. [[https://​github.com/​tj/​n]],​ une fois installé, permet l'​installation simplifié des différentes versions de //node//. 
-Si besoin, installer tout d'​abord //curl// : 
-<​code>​sudo apt-get install curl </​code>​ 
-puis **n**: 
-<​code>​sudo curl -o /​usr/​local/​bin/​n https://​raw.githubusercontent.com/​visionmedia/​n/​master/​bin/​n</​code>​ 
-Puis affecter les droits à n: 
-<​code>​sudo chmod +x /​usr/​local/​bin/​n</​code>​ 
-et enfin, installer //node// 
 <​code>​ <​code>​
-sudo n stable+curl -fsSL https://​deb.nodesource.com/​setup_24.x | sudo -E bash - && sudo apt-get install -y nodejs
 </​code>​ </​code>​
  
 +<note tip>Pour installer des paquets supplémentaires avec npm, vous aurez peut-être besoin d'​installer **[[apt>​build-essential]]**</​note>​
  
-==== Depuis un Personal Package Archives (PPA) (dépôts officiels "​nodesource"​)  ​====+==== Au moyen du gestionnaire de versions nvm ====
  
-[[https://chrislea.com/2014/​07/​09/​joining-forces-nodesource/|Chris Lea]] et [[https://nodesource.com/blog/chris-lea-joins-forces-with-nodesource|NodeSource]] se sont associés pour maintenir un nouveau PPA avec des versions stables ​plus récentes de Nodejs+**[[https://github.com/nvm-sh/nvm|nvm]]** (//Node Version Manager//), permet de gérer ​et utiliser très facilement différentes versions de //npm// et //node//.\\  
 +**nvm** rend disponible les paquets installés globalement sous une version spécifique de **Node.js**/**npm** exclusivement sous cette version, séparés des autres versions de **Node.js**/**npm**. On est sûr d'​avoir chaque outil compatible avec sa version de **Node.js**,​ mais il faut réinstaller les outils dont on a besoin pour chaque nouvelle version.\\  
 +À ce titre le gestionnaire **[[#​au_moyen_du_gestionnaire_de_versions_n|n]]** est plus souple et moins contraignant,​ mais éventuellement aussi moins fiable (tout est disponible partout).
  
-Chaque version de nodejs possède un script ​d'installation qui ajoute le dépôt correspondant au gestionnaire de paquet. +Si besoin, installer tout d'abord //curl// : 
-On les trouve ici : https://​github.com/​nodesource/distributions+<​code>​sudo apt install curl </​code>​ 
 +puis **nvm**: 
 +<​code>​curl -o- https://​raw.githubusercontent.com/​nvm-sh/​nvm/​v0.39.7/​install.sh | bash</​code>​ 
 +<note important>​ 
 +Ce numéro de version est amené à changer, vérifier la commande exacte sur [[https://​github.com/​nvm-sh/nvm?​tab=readme-ov-file#​install--update-script|le dépôt nvm]] ou [[https://​nodejs.org/​fr/​download|la page download de la doc officielle de node]]. 
 +</​note>​ 
 +Pour pouvoir utiliser immédiatement la commande ''​nvm''​ : 
 +<​code>​ 
 +source ~/.bashrc 
 +</​code>​ 
 + 
 +**nvm** est installé !
  
-=== Pour installer nodejs 10.x (dernière LTS au 01/​2019) ​===+Pour lister les versions disponibles ​:
 <​code>​ <​code>​
-wget -qO- https://​deb.nodesource.com/​setup_10.x | sudo -E bash - +nvm ls
-sudo apt install -y nodejs+
 </​code>​ </​code>​
-  * [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt://​nodejs|nodejs]]**. 
  
-=== Pour installer nodejs 11.===+Pour utiliser la version ''​v16.20.2''​ en particulier de Node.js ​:
 <​code>​ <​code>​
-wget -qO- https://​deb.nodesource.com/​setup_11.x | sudo -E bash - +nvm use 16
-sudo apt install -y nodejs+
 </​code>​ </​code>​
-  * [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt://​nodejs|nodejs]]**. 
- 
  
 +==== Au moyen du gestionnaire de versions n ====
  
 +**[[https://​github.com/​tj/​n|n]]**,​ une fois installé, permet l'​installation simplifié des différentes versions de //node//.
 +Si besoin, installer tout d'​abord //curl// :
 +<​code>​sudo apt install curl </​code>​
 +puis **n**:
 +<​code>​sudo curl -o /​usr/​local/​bin/​n https://​raw.githubusercontent.com/​visionmedia/​n/​master/​bin/​n</​code>​
 +Puis affecter les droits à n:
 +<​code>​sudo chmod +x /​usr/​local/​bin/​n</​code>​
 +et enfin, installer //node//
 +<​code>​
 +sudo n stable
 +</​code>​
  
 ===== Utilisation basique ===== ===== Utilisation basique =====
-Voici un exemple d'​application ​javascript ​que pourrait exécuter **Nodejs**:+ 
 +Voici un exemple d'​application ​JavaScript ​que pourrait exécuter **Node.js**:
 <file javascript app.js> <file javascript app.js>
 setTimeout(function() { setTimeout(function() {
Ligne 102: Ligne 145:
 console.log("​Serveur tourne sur http://​localhost:"​+port);​ console.log("​Serveur tourne sur http://​localhost:"​+port);​
 </​file>​ </​file>​
-Pour comprendre ce code vous devriez jeter un coup d'oeil à la [[http://​nodejs.org/​docs/​latest/​api/​index.html|documentation officielle]].+Pour comprendre ce code vous devriez jeter un coup d'oeil à la [[https://​nodejs.org/​docs/​latest/​api/​index.html|documentation officielle]].
  
-Bien entendu **Nodejs** n'a pas uniquement vocation à créer des petits serveurs comme celui-ci. Mais pour aller plus loin il va falloir utiliser des [[# Ajout de modules|modules]].+Bien entendu **Node.js** n'a pas uniquement vocation à créer des petits serveurs comme celui-ci. Mais pour aller plus loin il va falloir utiliser des [[# Ajout de modules|modules]].
  
 ===== Ajout de modules ===== ===== Ajout de modules =====
-Ajouter un module à **Nodejs** est extrêmement simple. Depuis un [[:​terminal]] tapez la ligne suivante :+ 
 +Ajouter un module à **Node.js** est extrêmement simple. Depuis un [[:​terminal]] tapez la ligne suivante :
 <​code>​npm install express</​code>​ <​code>​npm install express</​code>​
 //​Express.js//​ est un module qui vous évitera de réécrire le code pour un [[wpfr>​Serveur_HTTP|serveur http]] à chaque application.\\ N'​hésitez pas à aller voir sa documentation. //​Express.js//​ est un module qui vous évitera de réécrire le code pour un [[wpfr>​Serveur_HTTP|serveur http]] à chaque application.\\ N'​hésitez pas à aller voir sa documentation.
Ligne 116: Ligne 160:
  
 Pour supprimer cette application,​ il suffit de [[:​tutoriel:​comment_supprimer_un_paquet|supprimer son paquet]]. Selon la méthode choisie, le configuration globale de l'​application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés. Pour supprimer cette application,​ il suffit de [[:​tutoriel:​comment_supprimer_un_paquet|supprimer son paquet]]. Selon la méthode choisie, le configuration globale de l'​application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.
- 
  
 ===== Voir aussi ===== ===== Voir aussi =====
 +
   * [[https://​nodejs.org|site officiel nodejs.org]] (en)   * [[https://​nodejs.org|site officiel nodejs.org]] (en)
-  * [[https://​github.com/​joyent/​node/​wiki/​Installing-Node.js-via-package-manager|Installer ​nodejs ​sous linux]] (en) +  * [[https://​github.com/​joyent/​node/​wiki/​Installing-Node.js-via-package-manager|Installer ​Node.js ​sous linux]] (en) 
-  * [[http://​nodejs.org/​docs/​latest/​api/​index.html|Documentation de nodejs]] (en)+  * [[https://​nodejs.org/​docs/​latest/​api/​index.html|Documentation de Node.js]] (en)
   * [[https://​github.com/​nodejs/​LTS#​lts-schedule|la feuille de route (roadmap) des versions stables]] (en)   * [[https://​github.com/​nodejs/​LTS#​lts-schedule|la feuille de route (roadmap) des versions stables]] (en)
 +  * [[https://​www.hostinger.fr/​tutoriels/​comment-installer-node-js-sur-ubuntu|Tuto installation de NPM et nodjs par nvm]] (fr)
  
 ---- ----
-//Contributeur principal ​: [[utilisateurs:​nekdev]].//​+ 
 +//Contributeurs ​: [[:utilisateurs:​nekdev]], [[:​utilisateurs:​krodelabestiole]].//
  • nodejs.1563896278.txt.gz
  • Dernière modification: Le 23/07/2019, 17:37
  • par nekdev