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

Sommaire
  • Installer Node.js sur son ordinateur

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

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

Nous avons vu dans le premier chapitre que Node est un environnement d’exécution JavaScript.

Certains systèmes d’exploitation embarquent l’environnement d’exécution Node. D’autres ne le font pas. Et d’autres embarquent Node mais dans une version trop ancienne. Voire avec une configuration exotique dont il est difficile de connaître les tenants et aboutissants. Idéalement, nous voudrions pouvoir installer la version de Node de notre choix sur notre ordinateur.

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 2018. J’explique comment les installer au chapitre 2.

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 avec du code rapidement, 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 ont pour intention de vous aider à créer un environnement Node à jour sur votre ordinateur. Ce contenu s’applique également à un serveur destiné à héberger vos applications Node.

1. Installer Node.js

Il y a plusieurs manières d’installer Node sur une machine. Elles sont toutes correctes. Certaines manières 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.

  • si vous vous êtes déjà servi·e d’un terminal : je recommande d’utiliser nvm ;

  • si vous ne vous êtes jamais servi·e d’un terminal : il est plus simple d’utiliser un installeur depuis le site officiel de Node ;

  • si vous souhaitez maitriser les options d’installation : il serait logique de compiler depuis les sources et/ou d’utiliser Docker ;

  • si rien de tout ça ne vous parle : des services en ligne rendent Node accessible depuis un simple navigateur web.

💬
Question Pourquoi utiliser un installeur ?

Les installeurs permettent d’installer Node facilement, en quelques clics et sans toucher à un terminal.

Si vous utilisez un installeur correspondant à une version plus récente de Node, cette nouvelle version sera utilisée dans tous vos projets Node.

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

1.1. Sans installation, dans un navigateur web

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

Nous brosserons le portrait de 3 services différents de part 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). Ce service 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 (voir le 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 y compris la version de Node à installer.

cloud9 workspace
Figure 5. Espace de travail sur Cloud9.

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

1.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é ci-après).

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 à cette adresse : github.com/creationix/nvm.

💡
Alternatives nvm pour Windows

nvm ne fonctionne pas sur les ordinateurs équipés de Windows. Il existe trois autres alternatives : nvm-windows, _nvmw et nodist.

nvm-windows (github.com/coreybutler/nvm-windows) offre les mêmes fonctionnalités que son équivalent pour Linux et macOS nvm. Il est facile à installer et ne demande pas de privilège système particulier pour fonctionner.

Deux autres alternatives sont à essayer si nvm-windows pose problème : nvmw (github.com/hakobera/nvmw) et nodist (github.com/marcelklehr/nodist).

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 peuvent s’installer encore plus facilement sous macOS si vous utilisez le logiciel Homebrew.

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

Nous sommes libre 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 l’exemple précédent, nous avons installé deux versions de Node sur le même ordinateur. La version active est la dernière version 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.3.0
         v9.0.0
         system
default -> v10 (-> v10.3.0) (default)

L’exemple précédent détaille la liste des versions de Node installées et la liste des alias — une association 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 à ce que nous étions en train de faire.

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

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

  • nvm ls : liste les versions installées de Node ;

  • nvm use : bascule vers une version donnée de Node ;

  • nvm alias <nom> <version> : crée un alias nommé vers une version de Node ;

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

Quand nous sommes fixé·e·s sur 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.

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

Les distributions Linux et Debian 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, Ubuntu, Mint, RedHat Enterprise Linux (RHEL) et CentOS sont maintenus sur github.com/nodesource/distributions.

L’installation de node 10.x sous Ubuntu et Mint devient aussi simple que les deux 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 cette commande :

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

1.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

  • Ubuntu >= 12.04, Debian >= jessie, Mint : voir ci-après

  • Fedora >= 18 : sudo yum install nodejs npm

  • Red Hat Enterprise et *CentOS : sudo yum install nodejs npm --enablerepo=epel

  • Arch Linux : pacman -S nodejs

  • FreeBSD, OpenBSD : pkg install node

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

À noter 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.

1.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. Homebrew (brew.sh/) est un logiciel open source populaire. Il aide à installer des logiciels qui ne sont pas distribués via le Mac App Store.

L’installation de Homebrew se fait en deux étapes :

  1. l’installation des Command Line Tools pour compiler des logiciels depuis leur code source ;

  2. l’installation de Homebrew en elle-même.

Installation des Command Line Tools et de Homebrew sous macOS
xcode-select --install
BREWRL=https://rawgit.com/Homebrew/install/master/install \
   /usr/bin/ruby -e "$(curl -fsSL $BREWRL)"

Pour installer nvm, il suffira alors de faire :

brew install nvm

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

brew install node

Vous pouvez obtenir des options d’installations et de configuration en tapant brew info nvm et/ou brew info node.

1.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 Node.js du menu Démarrer :

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 : un terminal pour jouer avec JavaScript et voir les résultats que Node va interpréter ;

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


Si vous utilisez déjà un gestionnaire de paquet 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 supportées de Windows

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

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

1.7. Raspberry Pi

Des binaires sont disponibles pour les microcontrôleurs fonctionnant avec des processeurs ARMv6, ARMv7 et ARMv8. Ces microcontrôleurs sont 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 précédente relative aux distributions Linux : Debian et Ubuntu.

Installation de Node v10 sur Raspberry Pi Model 3 (CPU ARMv8)
curl -SLO https://nodejs.org/dist/v10.3.0/node-v10.3.0-linux-arm64.tar.xz
tar -xJf "node-v10.3.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/.

1.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 Node. 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 grand public de Node : rendre le binaire indépendant des librairies système (statique), le module http/2, les langues et fuseaux horaires fonctionnelles avec l’API ECMA 402 Intl, les 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.3.0
curl -sS https://nodejs.org/dist/v10.3.0/node-v10.3.0.tar.gz \
  | tar -zxf -
cd node-v10.3.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 à cette adresse github.com/nodejs/node/blob/master/BUILDING.md.

1.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 d’exécution. 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.3.0

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 cette commande :

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)

idem que 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) — elle pèse quelques Mo à peine ;

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

base Linux Debian sans outillage parfois nécessaires à des modules Node — utile si vous souhaitez économiser de l’espace disque.

L’intégralité des versions et architectures supportées est disponible sur le catalogue Docker Hub : hub.docker.com/_/node/.
Nous nous repencherons dessus dans la section déploiement d’une image Docker du chapitre 6.

2. 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 qu’elle s’est bien déroulée, ouvrez un terminal et saisissez la commande suivante :

node --version
v10.3.0

Le numéro de version de la version de Node fraichement installée devrait apparaitre. Si le mot terminal ne vous parle pas, la suite de cette section va vous éclairer — vous pourrez ensuite revenir essayer cette commande.

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

Le terminal est notre compagnon pour dialoguer avec le système d’exploitation. L'invite de commande 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égé pour interagir avec Node lorsqu’il est installé sur un ordinateur. La plupart des systèmes d’exploitation ont un terminal installé par défaut. Ça vaut également pour la majorité des services en ligne.

glitch terminal
Figure 9. Terminal du service en ligne Glitch.

2.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 ?

3. 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 ces fonctionnalités, on peut retrouver 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 intention 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.

3.1. Atom

atom

Atom (atom.io) est un éditeur de code open-source, multilingue et multi plate-forme dont le développement a été initié 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.

L’ensemble des extensions d'Atom sont disponibles sur atom.io/packages ; voici cependant une liste d’extensions 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 A, eslint).

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

Autocomplétion pour JavaScript, Node et d’autres librairies 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)

Support du langage Sass.

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

Raccourcis et aides pour formatter du texte au format Markdown.

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

Étend l’autocomplétion lors des appels aux modules npm (voir 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. L’intention peut être de signaler notre appréciation d’une extension mais aussi de retrouver plus tard celles qui nous plaisent.

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

Et ça tombe bien, le logiciel nous offre une commande à saisir dans un terminal pour installer toutes les extensions ajoutées à nos favoris !

apm stars --install

3.2. Visual Studio Code

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é initié 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.

3.3. WebStorm

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. Cette société est 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 se fasse mensuellement ou annuellement.

💡
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 projets open source.

3.4. Visual Studio IDE

visual studio

Visual Studio (www.visualstudio.com/vs/) est un environnement de développement (IDE) édité par Microsoft. Visual Studio était 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 le support de Python ou encore Node, entre autres.

Visual Studio est compatible Windows uniquement. Il existe en plusieurs éditions dont la Community Edition. Cette édition est gratuite, elle.

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 à cette adresse www.visualstudio.com/vs/node-js/.

4. 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, le processus de mise à jour est identique que pour l'installation de Node :

  • si vous aviez utilisé un installeur : téléchargez et installez-en la nouvelle version ;

  • si vous aviez utilisé un gestionnaire de version : téléchargez la nouvelle version et faites-en la nouvelle version 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 recourt à la commande docker pull node:<version>.

4.1. Mises à jour de sécurité

Node n’est pas exempt de bugs. Il y a une catégorie de bugs qui nécessite d’être réactif : les failles de sécurité. Ces failles offrent une surface d’attaque à des personnes mal intentionnées. Elles 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 perso à condition de ne pas laisser trainer de mots de passe ici et là. Cela peut 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. La 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 à ce qu’un module tiers exploite cette faille ;

  • notre site web : redéployer 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 bugs connus n’ont quasiment aucune chance de casser une application existante. On les appelle les versions patch. Une version patch est, par exemple, lorsque la version actuelle de Node est la v10.0.0 et que la nouvelle version est la 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 email (moins d’un email par mois).

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

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

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

La même chose que 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 peuvent être vulnérables du fait des modules npm dont elles sont dépendantes — en plus des vulnérabilités de Node.

4.2. Versions mineures

Les versions mineures de Node sont des versions qui ajoutent de nouvelles fonctionnalités à Node. Ces nouvelles fonctionnalités n’ont quasiment aucune chance de casser une application existante.

Une version mineure est, par exemple, lorsque la version actuelle de Node est la v10.0.3 et que la nouvelle version est la 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.

Que faire 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 ;

  • 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.

4.3. Versions majeures

Les versions majeures de Node sont des versions qui ajoutent de nouvelles fonctionnalités à Node. En revanche, ces versions peuvent être amenées à changer des comportements qui casseraient une application existante.

Une version majeure est, par exemple, lorsque la version actuelle de Node est la v10.3.0 et que la nouvelle version est la v11.0.0.
Les versions majeures sortent 2 fois par an. Une migration peut demander d’investir un certain temps pour adapter et tester nos applications Node.

Que faire en cas de sortie d’une version majeure ?
Sur notre ordinateur de développement, nous chercherons à prendre du temps pour tester nos applications et s’assurer de leur bon fonctionnement. Sur la machine de production, il n’y a pas d’action immédiate requise.

4.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. Parmi ces deux versions, une version majeure est supportée à long terme (Long Term Support, LTS).

La notion de version supportée à long terme (LTS) a été introduit pour donner un repère de stabilité. On sait qu’on peut compter dessus sans se poser de question. Les versions qui ne sont pas supportées à long terme sont à voir comme un coup d’essai, dans l’anticipation d’une migration vers une version suivante, supportée à long terme, elle.

schedule
Figure 12. 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 d’anciennes versions.

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 supportées 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, supportées 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.

5. 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. Nous savons aussi 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.