| 📦 Turbo JS 91999d1 k33g 16h ago | 1 | # Installer Node.js |
| 2 | |
| 3 | Ce guide montre comment mettre `node` et `npm` sur une machine, installer le serveur de langage à côté d'eux, et vérifier que Turbo JS le trouve. Il suppose que vous avez déjà Turbo JS, ou êtes sur le point de l'avoir — voir [installer l'éditeur](install.md) pour cela. |
| 4 | |
| 5 | **L'éditeur marche sans rien de tout cela.** L'édition, la coloration, les thèmes, les snippets et les fenêtres de terminal tournent tous sans aucun Node. Ce qui en a besoin : chaque commande du menu JavaScript, et — par le serveur de langage — la complétion, le menu Code et les marques d'erreur dans la gouttière. |
| 6 | |
| 7 | ## Quelles pièces il vous faut |
| 8 | |
| 9 | | Pièce | À quoi elle sert | D'où elle vient | |
| 10 | | --- | --- | --- | |
| 11 | | `node` | Le runtime : exécute les scripts, et est aussi le lanceur de tests (`node --test`) et un vérificateur de syntaxe (`node --check`) | l'installeur de Node.js ou un gestionnaire de versions | |
| 12 | | `npm` | Le gestionnaire de paquets : installe les dépendances d'un projet et, avec `-g`, des outils tels que le serveur de langage | livré avec Node | |
| 13 | | `npx` | Lance un outil depuis les dépendances du projet, ou le télécharge d'abord dans un cache — c'est ainsi que le fichier de départ lance Prettier et ESLint | livré avec npm | |
| 14 | | `typescript-language-server` + `typescript@6` | Le serveur de langage, et le moteur qu'il enveloppe | `npm install -g` | |
| 15 | |
| 16 | Turbo JS a été écrit contre Node **24** et npm **11** ; toute release courante convient. |
| 17 | |
| 18 | ## Installer Node |
| 19 | |
| 20 | Choisissez-en une. Un gestionnaire de versions est le choix habituel sur une machine où vivent plusieurs projets, parce que les projets épinglent des versions de Node différentes. |
| 21 | |
| 22 | **Avec nvm** (macOS et Linux) : |
| 23 | |
| 24 | ```bash |
| 25 | curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash |
| 26 | exec $SHELL |
| 27 | nvm install --lts |
| 28 | ``` |
| 29 | |
| 30 | **Avec Volta :** |
| 31 | |
| 32 | ```bash |
| 33 | curl https://get.volta.sh | bash |
| 34 | exec $SHELL |
| 35 | volta install node |
| 36 | ``` |
| 37 | |
| 38 | **Avec Homebrew** (macOS) : |
| 39 | |
| 40 | ```bash |
| 41 | brew install node |
| 42 | ``` |
| 43 | |
| 44 | **Avec l'installeur** de [nodejs.org](https://nodejs.org), qui met `node` et `npm` dans `/usr/local/bin` sur macOS et Linux. |
| 45 | |
| 46 | Vérifiez : |
| 47 | |
| 48 | ```bash |
| 49 | node --version |
| 50 | npm --version |
| 51 | ``` |
| 52 | |
| 53 | ``` |
| 54 | v24.19.0 |
| 55 | 11.17.0 |
| 56 | ``` |
| 57 | |
| 58 | ## Installer le serveur de langage |
| 59 | |
| 60 | ```bash |
| 61 | npm install -g typescript-language-server typescript@6 |
| 62 | ``` |
| 63 | |
| 64 | Deux paquets. Le `@6` n'est pas facultatif : TypeScript 7 est le portage natif et ne livre aucun `tsserver.js`, et le serveur refuse de démarrer à côté de lui. [Activer la complétion](enable-completion.md) en dit plus. |
| 65 | |
| 66 | L'installeur de Turbo JS fera cela si on le lui demande : |
| 67 | |
| 68 | ```bash |
| 69 | scripts/install.sh --with-server |
| 70 | ``` |
| 71 | |
| 72 | Il lance le même `npm install -g` quand aucun serveur fonctionnel n'est trouvé, et a besoin de `npm` sur le `PATH`. |
| 73 | |
| 74 | ## Vérifier |
| 75 | |
| 76 | ```bash |
| 77 | typescript-language-server --version |
| 78 | ``` |
| 79 | |
| 80 | ``` |
| 81 | 6.0.0 |
| 82 | ``` |
| 83 | |
| 84 | Et qu'il démarre vraiment — un serveur dont le TypeScript est de la mauvaise version n'échoue qu'à ce moment-là, pas à `--version` : |
| 85 | |
| 86 | ```bash |
| 87 | echo | typescript-language-server --stdio |
| 88 | ``` |
| 89 | |
| 90 | Il lit une ligne vide, n'y trouve aucun message, et se termine proprement. Un serveur qui imprime *Could not find a valid TypeScript installation* a TypeScript 7 à côté de lui : `npm install -g typescript@6`. |
| 91 | |
| 92 | ## Vérifier que l'éditeur le trouve |
| 93 | |
| 94 | Ouvrez n'importe quel fichier `.js` dans un projet et lisez l'extrémité droite de la barre d'état : |
| 95 | |
| 96 | ``` |
| 97 | F1 Describe F2 Save F3 Open F6 Window F10 Menu 1:1 LSP: ready |
| 98 | ``` |
| 99 | |
| 100 | `LSP: ready` signifie que le serveur a démarré. `LSP: no typescript-language-server — npm install -g typescript-language-server typescript@6` signifie qu'il n'a pas été trouvé, et le message dit comment l'obtenir. |
| 101 | |
| 102 | **Turbo JS regarde à ces endroits, dans l'ordre** : votre `PATH` ; `$NVM_BIN`, le répertoire de la version de Node que nvm a sélectionnée ; `$NPM_CONFIG_PREFIX/bin`, ou `~/.npm-global/bin` quand cette variable n'est pas définie ; `$PNPM_HOME` ; `$VOLTA_HOME/bin`, ou `~/.volta/bin` ; puis `/usr/local/bin` et `/opt/homebrew/bin`. Les répertoires des gestionnaires de versions sont fouillés même quand ils ne sont pas sur le `PATH` — un éditeur lancé par un lanceur de bureau, par exemple — pour que le cas qui ressemble sinon à un serveur cassé fonctionne. |
| 103 | |
| 104 | ## Variantes |
| 105 | |
| 106 | - **`npm install -g` demande sudo.** Le Node de l'installeur système possède `/usr/local/lib`. Soit utilisez `sudo`, soit donnez à npm un préfixe à vous : `npm config set prefix ~/.npm-global` et ajoutez `~/.npm-global/bin` au `PATH` — l'éditeur fouille ce répertoire par son nom. |
| 107 | - **Vous utilisez pnpm.** `pnpm add -g typescript-language-server typescript@6` met le serveur dans `$PNPM_HOME`, que l'éditeur fouille. |
| 108 | - **Vous avez déjà `typescript-language-server` mais pas de complétion.** Lancez `echo | typescript-language-server --stdio` et lisez ce qu'il dit. Puis lisez la barre d'état — `Run ▸ Language server status` montre le chemin que l'éditeur a trouvé et si le serveur a répondu à sa poignée de main. |
| 109 | - **Vous voulez mettre à jour.** `npm update -g typescript-language-server`. Gardez `typescript` en 6 tant que le serveur ne peut pas démarrer avec 7. Redémarrez l'éditeur : il démarre un serveur par session et ne remarque pas un nouveau binaire avant. |
| 110 | - **Vous installez pour la CI, ou dans une image.** `node:24-alpine` et les autres images officielles contiennent `node`, `npm` et `npx` ; `npm install -g typescript-language-server typescript@6` dans une ligne `RUN` ajoute le serveur. L'éditeur ne peut pas utiliser un serveur dans un conteneur, c'est donc pour lancer les commandes du projet, pas pour la complétion. |
| 111 | - **Vous voulez être sûr que l'éditeur ne le trouve pas simplement sur le `PATH`.** Lancez-le avec un environnement réduit — `env PATH=/usr/bin:/bin turbo-js main.js` — et la barre d'état doit toujours dire `LSP: ready`, depuis l'un des répertoires ci-dessus. |
| 112 | |
| 113 | ## À quoi sert chaque pièce, vue de l'éditeur |
| 114 | |
| 115 | | Pièce | Ce que l'éditeur en fait | |
| 116 | | --- | --- | |
| 117 | | `typescript-language-server` | La complétion, le survol, les définitions, les références, les implémentations, les symboles du fichier et du projet, et les marques d'erreur | |
| 118 | | `node` | Les entrées **Run** et **Test** du menu JavaScript | |
| 119 | | `npm` | Les entrées **Install** et **Start** | |
| 120 | | `npx` | Les entrées **Format** et **Lint** | |
| 121 | |
| 122 | ## Voir aussi |
| 123 | |
| 124 | - [Activer la complétion](enable-completion.md) — que faire quand le serveur est installé et ne dit toujours rien |
| 125 | - [Lancer des commandes Node depuis l'éditeur](run-node-commands.md) — le menu JavaScript |
| 126 | - [Coloration et complétion](../explanation/colouring-and-completion.md) — pourquoi le serveur est celui de TypeScript |