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 13/11/2017, 10:39] 185.24.184.74 [Depuis un PPA] |
nodejs [Le 17/09/2024, 20:44] (Version actuelle) krodelabestiole explications différences n / nvm |
||
---|---|---|---|
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'éxé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]] 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 voire même l'usage de plusieurs versions de Node.js simultanément : | ||
+ | * [[:Docker]] | ||
+ | * [[https://docs.brew.sh/Homebrew-on-Linux|Homebrew]] | ||
+ | * [[#au_moyen_du_gestionnaire_de_versions_nvm|nvm]] (//Node Version Manager//) | ||
+ | * [[#au_moyen_du_gestionnaire_de_versions_n|n]] | ||
==== Depuis les dépôts officiels ==== | ==== Depuis les dépôts officiels ==== | ||
- | <note important>sous Xenial, cela 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]]**. | + | <note important> |
+ | 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 v18 et la version active la v20 ((cf. https://nodejs.org/en/about/previous-releases)) ! | ||
+ | </note> | ||
+ | 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=== | ||
- | Le résumé, à saisir dans un [[:terminal]], utilise ici la [[:commande_shell|commande]] **[[:apt-get]]** : | + | |
+ | Le résumé, à saisir dans un [[:terminal]], utilise ici la [[:commande_shell|commande]] **[[:apt-cli|apt]]** : | ||
<code> | <code> | ||
- | sudo apt-get update | + | sudo apt update |
- | sudo apt-get install nodejs npm | + | sudo apt install nodejs npm |
</code> | </code> | ||
Ligne 37: | Ligne 55: | ||
</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++). |
- | ==== Au moyen du gestionnaire de versions n ==== | + | ==== Depuis un Personal Package Archives (PPA) (dépôts officiels "nodesource") ==== |
- | **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> | + | |
- | sudo n stable | + | |
- | </code> | + | |
- | ==== Depuis les 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 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 6.x (dernière LTS au 08/2017) : | + | === 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. | ||
<code> | <code> | ||
- | curl -sL https://deb.nodesource.com/setup_6.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> | ||
- | Pour installer nodejs 8.x : | + | === Pour installer Node.js 21.x : === |
<code> | <code> | ||
- | curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - | + | curl -fsSL https://deb.nodesource.com/setup_21.x | sudo -E bash - &&sudo apt-get install -y nodejs |
- | sudo apt install -y nodejs | + | |
</code> | </code> | ||
- | ==== Depuis un Personal Package Archives (PPA) ==== | + | <note important>Pour installer des paquets supplémentaires avec npm, vous aurez peut être besoin d'installer **[[apt>build-essential]]**</note> |
- | === Version 7.x ==== | + | ==== Au moyen du gestionnaire de versions nvm ==== |
- | La version 7 est la dernière version en date de NodeJS mais elle n'est pas une version LTS (Long Term Support). | + | **[[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). | ||
- | * Exécutez cette commande qui va vous rajouter le ppa, sa clé et mettre à jour votre liste de paquets | + | Si besoin, installer tout d'abord //curl// : |
- | <code>curl -sL https://deb.nodesource.com/setup_7.x | sudo bash -</code> | + | <code>sudo apt install curl </code> |
- | * [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt://nodejs|nodejs]]**. | + | puis **nvm**: |
- | <code>sudo apt-get install nodejs</code> | + | <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> | ||
- | === Version 6.x ==== | + | **nvm** est installé ! |
- | La version 6 n'est pas la dernière version de NodeJS mais c'est la dernière version LTS. | + | Pour lister les versions disponibles : |
+ | <code> | ||
+ | nvm ls | ||
+ | </code> | ||
- | * Exécutez cette commande qui va vous rajouter le ppa, sa clé et mettre à jour votre liste de paquets | + | Pour utiliser la version ''v16.20.2'' en particulier de Node.js : |
- | <code>curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -</code> | + | <code> |
- | * [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt://nodejs|nodejs]]**. | + | nvm use 16 |
- | <code>sudo apt-get install nodejs</code> | + | </code> |
- | === Version 0.12 === | + | ==== Au moyen du gestionnaire de versions n ==== |
- | + | ||
- | [[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 | + | |
- | + | ||
- | * Exécutez cette commande qui va vous rajouter le ppa, sa clé et mettre à jour votre liste de paquets | + | |
- | <code>curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -</code> | + | |
- | * [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt://nodejs|nodejs]]**. | + | |
- | <code>sudo apt-get install nodejs</code> | + | |
+ | **[[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 124: | Ligne 151: | ||
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 138: | Ligne 166: | ||
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]].// |