💡

Vous êtes en train de lire le Chapitre 2 du livre “Node.js”, écrit par Thomas Parisot et publié aux Éditions Eyrolles.

L’ouvrage vous plaît ? Achetez-le sur Amazon.fr ou en librairie. Donnez quelques euros pour contribuer à sa gratuité en ligne.

Installons Node et l’outillage de développement qui nous correspond le mieux, peu importe notre niveau de familiarité avec le développement logiciel.

Sommaire
  • Installer Node.js sur notre ordinateur

  • Choisir un éditeur de code pour écrire nos programmes

  • Déterminer quand migrer vers une nouvelle version de Node.js

Certains systèmes d’exploitation embarquent l’environnement d’exécution Node, tandis que d’autres ne le font pas, ou alors dans une version trop ancienne. Idéalement, nous voudrions pouvoir installer la version de Node de notre choix.

Les éditeurs de code nous facilitent la vie en rendant le code lisible en ajoutant de la couleur et des repères visuels. Ces logiciels nous invitent à piocher dans leur bibliothèque d’extensions pour en faire un outil qui nous ressemble.

💬
Remarque Versions de Node et npm

Le contenu de ce chapitre utilise les versions Node v10 et npm v6. Ce sont les versions stables recommandées en 2022.

Il n’est pas nécessaire d’avoir suivi des études d’informatique pour vouloir s’essayer à la programmation. Cela n’implique pas non plus d’en faire son métier.

Que l’on se qualifie de débutant·e, confirmé·e ou expert·e, il y a un petit rituel auquel on coupera difficilement :

  1. installer Node.js pour voir le résultat de nos programmes écrits en JavaScript ;

  2. installer un éditeur de code pour écrire nos programmes JavaScript plus confortablement.

Si l’idée est de jouer rapidement avec du code, sans rien installer et avec le premier ordinateur qui vous passe sous la main, je vous invite à aller directement à la section “Sans installation, dans un navigateur web” ci-après.

Les sections qui suivent vont vous aider à créer un environnement Node à jour sur votre ordinateur. Ce contenu s’applique également à un serveur destiné à héberger vos applications.

3. Installer Node.js

Il y a plusieurs manières d’installer Node sur une machine. Elles sont toutes correctes. Certaines sont plus adaptées que d’autres, selon votre aisance avec un terminal et selon le besoin de jongler rapidement entre différentes versions de Node.

💬
Question Pourquoi utiliser un installeur ?

Les installeurs facilitent l’installation de Node, en quelques clics et sans toucher à un terminal.

Si vous utilisez un installeur correspondant à une version plus récente de Node, c’est celle-ci qui sera utilisée dans tous vos projets.

C’est la solution la plus simple pour installer Node.

3.1. Sans installation, dans un navigateur web

Il est facile de s’essayer à Node avec un navigateur web moderne comme Firefox, Edge ou Chrome. Des services en ligne combinent un éditeur de texte et un environnement d’exécution Node à distance.

Nous brosserons le portrait de trois services qui diffèrent par leurs fonctionnalités et leur rapidité de prise en main :_RunKit, Codenvy et Cloud9.

RunKit (runkit.com) est de loin le service le plus simple. Il s’articule autour d’un concept de bac à sable ; notre code ne sera pas plus long qu’un fichier. Pour créer un nouveau bac à sable, il suffit de se rendre sur runkit.com/new.

runkit playground
Figure 1. Bac à sable sur RunKit

Codenvy (codenvy.io) est un service basé sur le logiciel open source Eclipse et édité par la compagnie Red Hat. L’interface est organisée exactement comme un des éditeurs de texte abordé plus loin dans ce chapitre.

codenvy workspace
Figure 2. Espace de travail sur Codenvy

Le processus de création de projet est relativement intuitif et il est très facile d’importer du code hébergé en ligne, sur GitHub notamment. La configuration minimale d’un projet est gratuite tandis que les fonctionnalités avancées et le travail en équipe sont payantes.

codenvy dashboard
Figure 3. Processus de création d’un espace de travail sur Codenvy

Enfin, Cloud9 (c9.io) est un service propriétaire édité par la compagnie Amazon Web Services (AWS, aws.amazon.com). Il intègre des fonctionnalités similaires à celles de Codenvy (éditeur en ligne, configuration de machine) et s’intègre de manière poussée avec les autres services d’AWS, dont EC2 et Lambda (chapitre 6). Le service est entièrement gratuit ; c’est la consommation de ressources qui est payante, à l’heure, en fonction du dimensionnement des ressources demandées.

cloud9 configuration
Figure 4. Configuration d’un espace de travail Cloud9

Cloud9 a peu d’opinions sur la manière dont votre environnement doit être configuré. Tout devra être configuré, des accès à votre compte GitHub à la version de Node à installer.

cloud9 workspace
Figure 5. Espace de travail sur Cloud9

Cela tombe bien, nvm est préinstallé sur chaque espace de travail.

3.2. Plusieurs versions sur la même machine (nvm)

nvm est l’acronyme de Node Version Manager. Ce logiciel permet d'installer plusieurs versions de Node sur un même ordinateur. Si vous êtes sous Windows, nvm-windows offre exactement les mêmes fonctionnalités (voir encadré).

Si vous venez d’un autre univers de programmation, nvm est l’équivalent de rvm ou rbenv dans le monde Ruby, de phpenv dans le monde PHP ou encore de virtualenv pour Python.

Le programme s’obtient à l’adresse suivante : github.com/creationix/nvm.

💡
Alternatives nvm pour Windows

nvm ne fonctionne pas sur les ordinateurs équipés de Windows. Il existe trois alternatives :

Commande d’installation du logiciel nvm v0.33.11
curl -L https://github.com/creationix/nvm/raw/v0.33.11/install.sh | bash
💡
Alternative nvm sous macOS

nvm et Node s’installent encore plus facilement sous macOS si vous utilisez le logiciel Homebrew.

Rendez-vous dans la section « macOS » pour en savoir plus.

Nous sommes libres d’installer toutes les versions de Node qui nous intéressent en appelant la commande nvm install dans un terminal.

Installation de deux versions différentes de Node
nvm install v10
nvm install v9

Dans cet exemple, nous installons deux versions de Node sur le même ordinateur. La version active est la dernière installée. On retrouve à tout moment les versions installées avec la commande nvm ls.

Liste des versions installées de Node avec la commande nvm ls
nvm ls
->       v10.9.0
         v9.0.0
         system
default -> v10 (-> v10.9.0) (default)

Cet exemple détaille la liste des versions de Node installées et celle des alias – associations entre un libellé et une version.

La commande nvm use nous fait naviguer entre des versions différentes de Node. L’utilisation répétée de nvm use v10 et de nvm use v9 nous fera aller et venir entre ces deux versions, sans rien perdre de ce que nous étions en train de faire.

La commande nvm --help affiche de l’aide à propos des commandes disponibles. J’utilise principalement les suivantes :

  • nvm install : installe ou met à jour une version de Node.

  • nvm ls : liste les versions installées.

  • nvm use : bascule vers une version donnée.

  • nvm alias <nom> <version> : crée un alias nommé vers une version.

  • nvm run <version> <script> : exécute un script Node dans une version donnée.

Quand nous avons fixé une version de Node à utiliser au quotidien, l’alias spécial default en fait la version qui est systématiquement activée :

nvm alias default 10

La commande nvm use nous sert alors à activer une autre version pendant la durée nécessaire à notre expérimentation.

3.3. Distributions Linux : Debian/Ubuntu et RedHat/CentOS

Ces distributions Linux listent Node dans leurs paquets officiels. Un simple apt-get install nodejs et ça fonctionne ! Ou presque, car bien souvent on écopera d’une vieille version de Node.

Des paquets officiels pour Debian (≥ jessie), Ubuntu (≥ 12.04), Mint, RedHat Enterprise Linux (RHEL) et CentOS sont maintenus sur github.com/nodesource/distributions.

L’installation de Node 10.x sous Ubuntu et Mint se résume aux commandes suivantes :

sudo su
curl -sL https://deb.nodesource.com/setup_10.x | bash -
sudo apt-get install -y nodejs

Pour Debian, il faudra se mettre en root et ensuite saisir ces commandes :

curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install -y nodejs

Pour RHEL et CentOS, il faudra se mettre en root et saisir la commande suivante :

curl -sL https://rpm.nodesource.com/setup_10.x | bash -

3.4. Distributions Linux : les autres

Des paquets officiels pour d’autres distributions que Debian, Ubuntu et Mint sont maintenus et accessibles par le biais des gestionnaires de paquets habituels :

  • Gentoo : emerge nodejs

  • Fedora (≥ 18) : sudo yum install nodejs npm

  • Arch Linux : pacman -S nodejs

  • FreeBSD, OpenBSD : pkg install node

La liste à jour est maintenue sur le site officiel de Node : nodejs.org/fr/download/package-manager.

Notez que vous pouvez aussi utiliser nvm pour gérer vos versions de Node indépendamment du cycle de vie de votre système d’exploitation Linux.

3.5. macOS

Un installeur officiel pour macOS est fourni sur le site de Node, à l’adresse nodejs.org/fr/download/.

nvm est la voie alternative recommandée pour gérer plusieurs versions de Node en parallèle.

Il est toutefois possible d’installer Node et nvm via le gestionnaire de paquets Homebrew (brew.sh). Il aide à installer des logiciels qui ne sont pas distribués via le Mac App Store.

  1. Installer les Command Line Tools pour compiler des logiciels depuis leur code source.

  2. Installation Homebrew.

Installation des Command Line Tools et de Homebrew sous macOS
xcode-select --install
/usr/bin/ruby -e "$(curl -fsSL https://git.io/brew-install)"

Pour installer nvm, il suffit alors de lancer la commande suivante :

brew install nvm

Ou, pour installer une seule version de Node, la plus récente :

brew install node

Vous obtiendrez des options d’installation et de configuration en tapant brew info nvm et/ou brew info node.

3.6. Windows

Un installeur officiel pour Windows est fourni sur le site de Node à l’adresse nodejs.org/fr/download/.

nvm-windows est la voie alternative recommandée pour gérer plusieurs versions de Node en parallèle.

windows node installer
Figure 6. Un des écrans d’installation de Node sous Windows 10

L’installeur officiel créera plusieurs raccourcis dans le dossier du menu Démarrer  Node.js :

windows node menu
Figure 7. Node.js dans le menu Démarrer sous Windows 10

Le menu créé par l’installeur contient deux icônes que nous utiliserons tout au long de la lecture de cet ouvrage :

  • Node.js  Node.js : un terminal pour jouer avec JavaScript et voir les résultats que Node va interpréter ;

  • Node.js  Node.js command prompt : un terminal pour exécuter nos programmes écrits en JavaScript.

Si vous utilisez déjà un gestionnaire de paquets comme Scoop (scoop.sh) ou Chocolatey (chocolatey.org), le chemin d’installation vers Node s’en trouvera réduit à une simple commande :

Avec Scoop
scoop install nodejs
Avec Chocolatey
choco install nodejs
🚨
Attention Versions de Windows

Node n’est pas compatible avec les versions antérieures à Vista. Cela inclut Windows XP.

Mieux vaudra utiliser un service en ligne pour essayer Node sur votre ordinateur ou passer à Linux pour lui redonner une seconde vie en toute sécurité !

3.7. Raspberry Pi

Des binaires sont disponibles pour les microcontrôleurs fonctionnant avec des processeurs ARM v6/7/8, au cœur de ce que l’on appelle Internet des Objets (Internet of Things, IoT). Ces petits ordinateurs consomment peu d’énergie, disposent d’une connectique pour se relier à Internet et s’interfacent avec toutes sortes de capteurs.

Un paquet deb est également proposé pour les utilisateurs du système d’exploitation Raspbian (www.raspbian.org). Les instructions d’installation sont identiques à celles décrites dans la section relative aux distributions Linux Debian.

Installation de Node v10 sur Raspberry Pi Model 3 (CPU ARMv8)
curl -SLO https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-arm64.tar.xz
tar -xJf "node-v10.9.0-linux-arm64.tar.xz" -C /usr/local --strip-components=1
ln -s /usr/local/bin/node /usr/local/bin/nodejs

Tous les binaires et les instructions d’installation sont disponibles sur nodejs.org/fr/download/.

3.8. Compiler depuis les sources

Certaines situations exigeront que vous compiliez Node. C’est le cas si vous cherchez à travailler au plus près du système sur lequel vous comptez déployer vos applications. Je pense par exemple à des architectures à processeur ARM, PowerPC, IBM System/390 ou bien à des systèmes Android, OpenBSD ou AIX.

La compilation manuelle est également intéressante pour régler plus finement certains aspects de Node : rendre le binaire indépendant des bibliothèques système (statique), le module http/2, langues et fuseaux horaires fonctionnels avec l’API ECMA 402 Intl, options de sécurité liées à OpenSSL, mais aussi l’intégration avec des profileurs et débogueurs externes (type XCode, GNU Debugger, Intel VTune).

Étapes de compilation de Node v10.9.0
curl -sS https://nodejs.org/dist/v10.9.0/node-v10.9.0.tar.gz \
  | tar -zxf -
cd node-v10.9.0
./configure && make && make install

La compilation manuelle requiert la présence de GCC (≥ 4.9), de Python (≥ 2.6) et de GNU Make (≥ 3.81).

Les instructions de compilation varient d’un système d’exploitation à l’autre. Consultez les dépendances et instructions complètes à l’adresse suivante : github.com/nodejs/node/blob/master/BUILDING.md.

3.9. Images Docker

Docker (docker.com) est un outil open source dit d'applications en conteneur. Une de ses qualités principales est d'isoler l’exécution d’applications de leur environnement. Une image Docker décrit la recette d’installation d’une application. L’environnement d’exécution Docker fait office de "passe-plat" avec le système d’exploitation. Une image Docker fonctionne ainsi de la même manière, qu’elle soit exécutée sous Linux, macOS ou encore Windows.

Les installeurs et instructions d’installation de Docker se trouvent à l’adresse docker.com/community-edition.

Une fois Docker installé, on peut exécuter une image officielle pour Node v10.

Affiche la version de Node
docker run -ti --rm node:10 node --version
v10.9.0

Ici, Docker télécharge l’image node:10 et exécute la commande node --version dans un contexte isolé du système d’exploitation.

Pour lancer un terminal Node dans Docker, il faudrait saisir la commande suivante :

docker run -ti --rm node:10 node
2+2
4

Plusieurs variantes d’images Node se trouvent à notre disposition :

standard (node:10)

Base Linux Debian pour tout type d’applications Node.

Debian (node:10-wheezy)

Comme standard mais sur des bases Debian différentes, comme Wheezy, Stretch, etc..

Alpine (node:10-alpine)

Distribution spécialement créée pour Docker (alpinelinux.org), qui pèse à peine quelques Mo.

Allégée (node:10-slim)

Base Linux Debian sans outillage parfois nécessaire à des modules Node – utile si vous souhaitez économiser de l’espace disque.

L’intégralité des versions et architectures prises en charge est disponible sur le catalogue Docker Hub : hub.docker.com/_/node/.

Nous reviendrons sur ce sujet dans la section “Déploiement d’une image Docker” du chapitre 6.

4. Vérifier l’installation de Node depuis un terminal (shell)

Nous avons installé un environnement d’exécution Node dans la section précédente. Pour vérifier que tout s’est bien déroulé, ouvrez un terminal et saisissez la commande suivante :

node --version
v10.9.0

Le numéro de version du Node fraichement installé devrait apparaître. Si le mot terminal ne vous parle pas, la suite de cette section va vous éclairer – vous pourrez ensuite revenir essayer cette commande.

4.1. Qu’est-ce qu’un terminal ?

Le terminal est notre compagnon pour dialoguer avec le système d’exploitation. L'invite de commandes est son nom véritable. Ce nom nous donne un indice sur la fonction de ce type de logiciel : inviter l’utilisateur à saisir des commandes pour obtenir des résultats calculés par un ordinateur.

macos terminal
Figure 8. Terminal iTerm2 sous macOS
💬
Histoire Terminal physique

L’histoire des invites de commande remonte au temps où les ordinateurs étaient plus volumineux que nos logements. Une époque lointaine où les ordinateurs étaient véritablement et physiquement distants des claviers qui les interrogeaient.

Un terminal est notre moyen privilégié pour interagir avec Node lorsqu’il est installé sur un ordinateur. Les systèmes d’exploitation en ont pour la plupart un installé par défaut. Cela vaut également pour la majorité des services en ligne.

glitch terminal
Figure 9. Terminal du service en ligne Glitch

4.2. Choisir un terminal

Voici une liste non exhaustive d’applications de type terminal :

macOS
  • Terminal.app : fourni par défaut (dans Applications  Utilitaires) ;

  • iTerm2 : une version améliorée disponible sur iterm2.com (ou brew cask install iterm2) ;

Linux
Windows
windows terminal
Figure 10. Node.js Command Prompt sous Windows 10

Maintenant que nous avons installé Node et compris comment y accéder depuis notre système d’exploitation ou navigateur web, attaquons-nous au dernier morceau du puzzle : avec quel logiciel écrire du code JavaScript pour nos applications Node ?

5. Choisir un éditeur de texte

Programmer pour Node revient dans la majorité des cas à écrire du JavaScript. À cela s’ajoutent le HTML et le CSS dans le cas d’applications ou de sites web.

À la base, si un éditeur de texte suffit pour écrire du code, prenons le temps de regarder ce qui pourrait nous apporter un peu de confort dans le processus d’écriture.

Les logiciels présentés ci-après couvrent bon nombre de fonctionnalités qui améliorent de près ou de loin notre capacité à écrire du code de qualité. Parmi elles, on retrouve la coloration syntaxique, l’inspection dynamique, le débogage, des astuces de productivité et d’intégration à l’écosystème Node.

Cette sélection a pour but de vous aider à piocher au plus près de vos goûts. Le meilleur logiciel sera celui qui vous plaira. Rien n’empêche d’en changer par la suite.

5.1. Atom

atom
Figure 11. Atom

Atom (atom.io) est un éditeur de code open-source, multilingue et multi plate-forme, dont le développement a été lancé par la société commerciale GitHub (github.com). Le logiciel est basé sur Electron, un environnement d’exécution d’applications de bureau reposant sur les technologies web et sur Node !

Atom offre un écosystème d’extensions pour étendre les fonctionnalités de l’éditeur. On retrouvera des extensions dédiées à l’auto-complétion, un débogueur Node intégré (pour exécuter nos programmes sans changer de fenêtre), mais aussi une vérification syntaxique sur mesure.

Toutes les extensions d’Atom sont disponibles sur atom.io/packages ; voici une liste de celles que j’utilise au quotidien :

minimap (atom.io/packages/minimap)

Une prévisualisation de l’intégralité du code source d’un fichier.

file-icons (atom.io/packages/file-icons)

Une manière plus agréable de visualiser les différents types de fichiers en fonction de leur icône.

pigments (atom.io/packages/pigments)

Affiche les couleurs en marge et dans le code source.

language-babel (atom.io/packages/language-babel)

Coloration syntaxique de tous les langages compris par l’outil Babel (babeljs.io), dont les versions modernes de JavaScript, JSX, GraphQL, etc.

emmet (atom.io/packages/emmet)

Génère du HTML à partir d’une écriture sous forme de sélecteur CSS.

linter-eslint (atom.io/packages/linter-eslint)

Vérification syntaxique basée sur les règles projet du module ESLint (eslint.org, voir l'annexe).

atom-ternjs (atom.io/packages/atom-ternjs)

Autocomplétion pour JavaScript, Node et d’autres bibliothèques populaires comme jQuery, chai et underscore.

editorconfig (atom.io/packages/editorconfig)

Adapte les réglages d’indentation et autres styles d’écriture de code documentés dans chaque projet.

language-sass (atom.io/packages/language-sass)

Prise en charge du langage Sass.

markdown-writer (atom.io/packages/markdown-writer)

Raccourcis et aides pour formater du texte au format Markdown.

autocomplete-modules (atom.io/packages/autocomplete-modules)

Étend l’autocomplétion lors des appels aux modules npm (chapitre 5).

linter-sass-lint (atom.io/packages/linter-sass-lint)

Vérification syntaxique des fichiers Sass.

node-debugger (atom.io/packages/node-debugger)

Intégration du débogueur Node.

tablr (atom.io/packages/tablr)

Éditeur de fichiers CSV.

linter-markdown (atom.io/packages/linter-markdown)

Vérification syntaxique des fichiers Markdown.

node-resolver (atom.io/packages/node-resolver)

Navigation au sein des modules npm en cliquant sur leurs méthodes ou propriétés.

💡
Productivité Installer vos extensions favorites

Chaque extension peut être ajoutée à nos favoris sur le site atom.io, aussi bien pour signaler que nous l’apprécions que pour la retrouver plus tard.

atom favourite
Figure 12. Une extension Atom ajoutée aux favoris

Le logiciel nous offre une commande à saisir dans un terminal pour installer toutes les extensions de nos favoris :

apm stars --install

5.2. Visual Studio Code

visual studio code
Figure 13. Visual Studio Code

Visual Studio Code (code.visualstudio.com) est un éditeur de code open source, multilingue et multi plate-forme dont le développement a été lancé par la société Microsoft. Le logiciel est basé sur Electron, un environnement d’exécution d’applications de bureau reposant sur les technologies web et sur Node.

Le système IntelliSense est un de ses atouts principaux. Il se sert du contexte disponible pour offrir une auto-complétion et des bulles d’aide pertinentes. C’est un éditeur parfaitement adapté au développement d’applications Node grâce à des fonctionnalités natives comme l’exécution, le débogage, la gestion de tâches et le versionnement – du code et des modules npm.

Visual Studio Code se complète d’un mode Node (code.visualstudio.com/Docs/runtimes/nodejs) et d’une place de marché (marketplace.visualstudio.com/VSCode) pour étendre ses fonctionnalités.

5.3. WebStorm

webstorm
Figure 14. WebStorm

WebStorm (www.jetbrains.com/webstorm/) est un environnement de développement (IDE) payant dédié au développement web HTML5, JavaScript et Node.

Le logiciel est commercialisé par la société JetBrains, renommée pour ses IDE Pycharm (pour Python), PhpStorm (pour PHP) et IntelliJ IDEA (pour Java).

WebStorm est compatible Windows, Linux et macOS. Ses forces résident dans sa relative légèreté, une auto-complétion intelligente prenant en compte la résolution des modules CommonJS et AMD, une intégration des outils populaires dans l’écosystème Node (npm, ESLint, Mocha, Karma, Bower, etc.) ainsi qu’un débogage avancé.

Le téléchargement de WebStorm inclut une période d’essai de 30 jours. La tarification du produit varie selon que vous soyez un individu ou une entreprise et que le paiement soit mensuel ou annuel.

💡
Astuce Licence open source

Vous pouvez demander à bénéficier d’une licence gratuite sous réserve d’une preuve de contribution à un ou plusieurs projet(s) open source.

5.4. Visual Studio IDE

visual studio
Figure 15. Visual Studio IDE

Visual Studio (www.visualstudio.com/vs/) est un environnement de développement édité par Microsoft. Historiquement dédié au développement applicatif Windows (Visual Basic, Visual C++), ce logiciel gère aujourd’hui bien plus de langages, dont C#, HTML, CSS, JavaScript, ASP.Net. Il est surtout extensible, ce qui permet de lui ajouter Python ou encore Node, entre autres.

Visual Studio est compatible Windows uniquement. Il existe en plusieurs versions, parmi lesquelles la Community qui est gratuite.

Afin de bénéficier de l’intégration complète de l’écosystème Node, il est nécessaire d’installer l’extension Node.js Tools for Visual Studio (aussi nommée NTVS). Elle est gratuite, open source et disponible à l’adresse suivante : www.visualstudio.com/vs/node-js/.

6. Quand mettre à jour Node.js ?

Le développement de Node continue pendant que vous lisez ces lignes. Les sections suivantes présentent les différentes raisons pour lesquelles de nouvelles versions de Node sont distribuées.

Quelle que soit la raison, la mise à jour est identique à l'installation initiale de Node :

  • Si vous aviez utilisé un installeur : téléchargez et installez la nouvelle version.

  • Si vous aviez utilisé un gestionnaire de versions : téléchargez la nouvelle version et indiquez qu’elle devient celle par défaut.

  • Si vous aviez compilé depuis les sources : téléchargez les sources de la nouvelle version et compilez à nouveau.

  • Si vous aviez utilisé une image Docker : téléchargez la nouvelle version en ayant recours à la commande docker pull node:<version>.

6.1. Mises à jour de sécurité

Node n’est pas exempt de bogues. Une catégorie en particulier nécessite d’être réactif : les failles de sécurité. Ces failles offrent une surface d’attaque à des personnes mal intentionnées, qui seraient tentées d’accéder sans permission à des serveurs, et donc aux données qu’ils contiennent.

L’impact peut être faible pour un site personnel, à condition de ne pas laisser traîner de mots de passe ici et là. Cela risque de se révéler beaucoup plus fâcheux pour un site e-commerce ou une entreprise dont la santé serait mise en jeu.

L’équipe de Node livre des versions corrigeant les failles de sécurité aussitôt qu’elle le peut. Une faille n’est d’ailleurs pas révélée avant que le correctif soit disponible, par mesure de précaution.

Que faire si la faille de sécurité affecte la version de Node installée sur :

  • notre ordinateur de développement : c’est peu risqué, sauf si un module tiers l’exploite ;

  • notre site web : redéployez aussitôt le site en question avec une version corrigeant la faille.

Les versions de Node qui corrigent des failles de sécurité ou des bogues connus n’ont quasiment aucun risque de casser une application existante. On les appelle les versions patch. Elles sont indiquées par le troisième numéro de version : v10.0.0, v10.0.1, …

Plusieurs ressources sont à notre disposition pour se tenir informé·e :

Liste de diffusion (groups.google.com/group/nodejs-sec)

Pour recevoir l’alerte par courriel (moins d’une par mois).

Blog Node.js (nodejs.org/en/blog/vulnerability/)

Une page web à consulter avec un navigateur. Les mêmes messages sont relayés sur la liste de diffusion.

Fil RSS du blog Node.js (nodejs.org/en/feed/vulnerability.xml)

Comme le point précédent mais auquel on peut souscrire avec un lecteur RSS comme Feedly ou Mozilla Thunderbird.

Compte Twitter @nodesecurity (twitter.com/nodesecurity)

Annonce des informations liées à la sécurité générale de Node et de son écosystème.

💬
Lien Groupe de travail Node.js Security

Un groupe de travail (github.com/nodejs/security-wg) veille à maintenir et améliorer la sécurité de Node. Ces personnes se chargent d’être proactives dans la détection de failles dans l’architecture de Node, mais aussi dans l’intégration de code tiers, comme la brique OpenSSL ou le module npm.

Le chapitre 6 décrit comment se maintenir à jour sur les alertes de sécurité de nos applications Node. Celles-ci risquent notamment d’être vulnérables à cause des modules npm dont elles dépendent – en plus des vulnérabilités de Node.

6.2. Versions mineures

Les versions mineures de Node sont celles qui lui ajoutent de nouvelles fonctionnalités quasiment sans risque de casser une application existante. Elles sont indiquées par le deuxième chiffre du numéro de version : v10.0.3, v10.1.0, …

Les versions mineures sortent une petite dizaine de fois par an. Une migration ne demande pas nécessairement d’investir beaucoup de temps pour adapter et tester nos applications Node.

En cas de sortie d’une version mineure :

  • Sur notre ordinateur de développement : on peut migrer si l’on veut tester ou bénéficier des nouvelles fonctionnalités de cette version.

  • Sur notre site web : pas d’action immédiate requise. On peut migrer si l’on veut bénéficier des nouvelles fonctionnalités de cette version.

6.3. Versions majeures

Les versions majeures ajoutent également de nouvelles fonctionnalités à Node, mais elles peuvent être amenées à changer des comportements qui casseraient une application existante.

Elles sont indiquées par le premier chiffre du numéro de version : v10.0.0, v11.0.0, …

Les versions majeures sortent deux fois par an. Une migration peut demander de consacrer un certain temps à adapter et à tester nos applications Node.

En cas de sortie d’une version majeure :

  • Sur notre ordinateur de développement : nous prenons du temps pour tester nos applications et nous assurer de leur bon fonctionnement.

  • Sur la machine de production : il n’y a pas d’action immédiate requise.

6.4. Comprendre le cycle de vie produit

Le développement de la plate-forme Node prend soin de ne pas aller trop vite ni d’altérer la stabilité des applications et des outils en fonctionnement. Il sort au maximum deux versions majeures par an, dont une est maintenue à long terme (Long Term Support, LTS).

La notion de version LTS a été introduite pour donner un repère de stabilité. On sait qu’on peut compter dessus sans se poser de question. Les autres versions sont à voir comme des coups d’essai, dans l’anticipation d’une migration vers une version suivante, maintenue à long terme.

schedule
Figure 16. Calendrier de publication des versions de Node
💬
Lien Calendrier de sorties

Le calendrier des sorties de Node est tenu à jour sur github.com/nodejs/Release. Référez-vous à ce calendrier pour des informations à jour sur les prochaines versions et l’arrêt de maintenance des plus anciennes.

Si on récapitule : - Les versions impaires (v5, v7, etc.) - sont développées pendant neuf mois ; - ne sont pas maintenues au-delà. - Les versions paires (LTS, v10, etc.) - sont basées sur la version impaire précédente ; - sont développées pendant six mois ; - sont maintenues LTS pendant dix-huit mois ; - basculent en maintenance pendant douze mois supplémentaires ; - ne sont pas maintenues au-delà.

Les patchs de sécurité ne concernent que les versions en développement, LTS ou en maintenance.

Cette planification garantit une plate-forme et un ensemble de fonctionnalités stables de manière prédictible, à la fois pour les projets reposant sur Node, mais aussi pour l’écosystème de contributeurs de modules npm.

7. Conclusion

Nous sommes désormais en mesure d’installer et mettre à jour Node sur notre ordinateur. Nous savons aussi avec quel(s) logiciel(s) développer nos applications et où nous informer pour savoir quand faire nos mises à jour, pour corriger des problèmes de sécurité et bénéficier des nouvelles fonctionnalités du langage.

Le prochain chapitre nous amènera à reprendre les bases du langage JavaScript en jouant avec le terminal Node. On découvrira également les différences entre JavaScript, ECMAScript et Node.