Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
nodejs [Le 12/09/2023, 22:08] krodelabestiole [Installation] explication versions +docker + homebrew +nvm |
nodejs [Le 25/03/2024, 16:46] (Version actuelle) bcag2 [Depuis un Personal Package Archives (PPA) (dépôts officiels "nodesource")] v18->v20, 19->21 |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
{{tag>programmation serveur }} | {{tag>programmation serveur }} | ||
- | ====== Nodejs ====== | + | ====== Node.js ====== |
- | **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. | + | **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 **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.).\\ | + | 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, **Nodejs** 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]]. | + | 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> | <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://yarnpkg.com/|Yarn]]** se propose de remplacer **npm**, et **[[https://bun.sh|Bun]]** propose de remplacer à la fois **Nodejs**, **npm** et **Yarn**. | + | 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://yarnpkg.com/|Yarn]]** se propose de remplacer **npm**, et **[[https://bun.sh|Bun]]** propose de remplacer à la fois **Node.js**, **npm** et **Yarn**. |
</note> | </note> | ||
Ligne 19: | Ligne 19: | ||
===== Installation ===== | ===== Installation ===== | ||
- | Il existe de nombreuses manière d'installer **Node.js**. Ubuntu-fr le propose dans ses dépôts officiels et recommande évidemment cette méthode. Mais certaines applications JavaScript requièrent des versions spécifique de Node.js et/ou de npm, et [[:APT]] ne convient pas à l'installation de versions spécifiques, non-prises en charge nativement avec sa version d'Ubuntu. | + | 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]] ne convient pas à l'installation de versions spécifiques, autres que la version précise proposée nativement avec chaque version particulière d'Ubuntu. |
- | Il existe donc plusieurs autres méthodes d'installation, et en particulier des gestionnaires de paquets qui permettent l'installation et même l'usage de plusieurs versions de Node.js simultanément : | + | Il existe donc plusieurs autres méthodes d'installation, et en particulier des gestionnaires de paquets qui permettent l'installation voire même l'usage de plusieurs versions de Node.js simultanément : |
* [[:Docker]] | * [[:Docker]] | ||
* [[https://docs.brew.sh/Homebrew-on-Linux|Homebrew]] | * [[https://docs.brew.sh/Homebrew-on-Linux|Homebrew]] | ||
- | * [[https://github.com/nvm-sh/nvm|nvm]] (//Node Version Manager//) | + | * [[#au_moyen_du_gestionnaire_de_versions_nvm|nvm]] (//Node Version Manager//) |
* [[#au_moyen_du_gestionnaire_de_versions_n|n]] | * [[#au_moyen_du_gestionnaire_de_versions_n|n]] | ||
==== Depuis les dépôts officiels ==== | ==== Depuis les dépôts officiels ==== | ||
<note important> | <note important> | ||
- | sous Focal, cela installe la version LTS… 10.19 et sous Jammy la version 12.22.9 qui ne sont plus supportées \\ | + | sous [[:focal|Focal]], cela installe la version LTS… 10.19 et sous [[:jammy|Jammy]] la version 12.22.9 qui ne sont plus supportées \\ |
- | la dernière version LTS en maintenance étant la v14 ((cf. https://nodejs.org/fr/about/releases/)) ! | + | la dernière version LTS en maintenance étant la v18 et la version active la v20 ((cf. https://nodejs.org/en/about/previous-releases)) ! |
</note> | </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]]. | + | Installer **Node.js** 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 Node.js]]. |
=== Résumé en ligne de commande=== | === Résumé en ligne de commande=== | ||
Ligne 54: | Ligne 54: | ||
</note> | </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++). | + | 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 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 Personal Package Archives (PPA) (dépôts officiels "nodesource") ==== | ==== Depuis un Personal Package Archives (PPA) (dépôts officiels "nodesource") ==== | ||
- | [[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://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 Node.js |
- | Chaque version de nodejs possède un script d'installation qui ajoute le dépôt correspondant au gestionnaire de paquet. | + | 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 | On les trouve ici : https://github.com/nodesource/distributions | ||
- | === Pour installer nodejs 18.x (LTS : support jusqu'à fin avril 2025) : === | + | === Pour installer Node.js 20.x (LTS : active jusqu'en oct. 2024, support jusqu'à fin avril 2026) : === |
C'est la version recommandée pour vos applications en production. | C'est la version recommandée pour vos applications en production. | ||
<code> | <code> | ||
- | wget -qO- https://deb.nodesource.com/setup_18.x | sudo -E bash - | + | curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\ |
- | sudo apt install -y nodejs | + | sudo apt-get install -y nodejs |
</code> | </code> | ||
- | * [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt://nodejs|nodejs]]**. | ||
- | === Pour installer nodejs 19.x et yarn : === | + | === Pour installer Node.js 21.x : === |
- | FIXME la 19 n'est plus active, à remplacer par la version 20.x | ||
<code> | <code> | ||
- | curl -fsSL https://deb.nodesource.com/setup_19.x | sudo -E bash - | + | curl -fsSL https://deb.nodesource.com/setup_21.x | sudo -E bash - &&sudo apt-get install -y nodejs |
- | curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null | + | |
- | echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list | + | |
- | sudo apt update && sudo apt install -y nodejs yarn | + | |
</code> | </code> | ||
- | * [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt://nodejs|nodejs]]**. | ||
<note important>Pour installer des paquets supplémentaires avec npm, vous aurez peut être besoin d'installer **[[apt>build-essential]]**</note> | <note important>Pour installer des paquets supplémentaires avec npm, vous aurez peut être besoin d'installer **[[apt>build-essential]]**</note> | ||
+ | |||
+ | ==== Au moyen du gestionnaire de versions nvm ==== | ||
+ | |||
+ | **[[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//. | ||
+ | |||
+ | Si besoin, installer tout d'abord //curl// : | ||
+ | <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|cette page]]. | ||
+ | </note> | ||
+ | Pour pouvoir utiliser immédiatement la commande ''nvm'' : | ||
+ | <code> | ||
+ | source ~/.bashrc | ||
+ | </code> | ||
+ | |||
+ | **nvm** est installé ! | ||
+ | |||
+ | Pour lister les versions disponibles : | ||
+ | <code> | ||
+ | nvm ls | ||
+ | </code> | ||
+ | |||
+ | Pour utiliser la version ''v16.20.2'' en particulier de Node.js : | ||
+ | <code> | ||
+ | nvm use 16 | ||
+ | </code> | ||
==== Au moyen du gestionnaire de versions n ==== | ==== 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//. | + | **[[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// : | Si besoin, installer tout d'abord //curl// : | ||
<code>sudo apt install curl </code> | <code>sudo apt install curl </code> | ||
Ligne 102: | Ligne 124: | ||
===== 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 128: | Ligne 150: | ||
Pour comprendre ce code vous devriez jeter un coup d'oeil à la [[https://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 145: | Ligne 167: | ||
* [[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) |
- | * [[https://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) | * [[https://www.hostinger.fr/tutoriels/comment-installer-node-js-sur-ubuntu|Tuto installation de NPM et nodjs par nvm]] (fr) | ||
Ligne 152: | Ligne 174: | ||
---- | ---- | ||
- | //Contributeurs : [[:utilisateurs:nekdev]].// | + | //Contributeurs : [[:utilisateurs:nekdev]], [[:utilisateurs:krodelabestiole]].// |