J’ai découvert Next.js en furetant sur le web, hier, et je me suis dit que j’allais essayer, pour voir. Ce framework
permet de développer une appli React mais en faisant en sorte que tout le bordayle soit « compilé » côté serveur et pas côté client, rendant ainsi la/les page(s) plus légère(s).
Bon, en vrai, la première page de test que j’ai codée pèse 2,4 Mo côté client, quand même — on est loin des 360 Ko (environ) de la page d’accueil de ce blog ! —, mais c’est peut-être parce que je suis en mode « développement » et pas production ? Bref.
Pour ce faire, un petit tuto en ligne permet de faire ses premiers pas avec ce système. Initialisation d’un projet avec un :
npm init -y
Suivi d’un :
npm install --save react react-dom next
Qui m’installe la moitié d’internet sur mon Mac (environ), et m’indique au passage qu’il serait opportun que je fasse une mise à jour de npm. Je…
Et là les emmerdes ont commencé !
Parce que la première commande de mise à jour, celle-là même indiquée par le même npm, s’est mal terminée. Je relance en mode « sudo », pour voir, et évidemment pas mieux.
Résultat des courses, un npm complètement en vrac et inutilisable. Je cherche sur le Net, évidemment, mais pas grand chose d’autre que : « Tout désinstaller, node compris, et refaire une installation propre ».
J’avoue que j’ai un peu hésité parce que j’ai pas mal de modules, en particulier des linters
utilisé dans Sublime Text pour le développement et je n’avais pas envie de foutre tout ça en l’air.
Je passe les tergiversations et j’enchaîne directement sur l’opération en question, que j’ai fini par me résoudre à effectuer. En détail, ça donne ce qui suit :
Désinstallation
On commence par faire le ménage de l’existant en commençant par lister et sauvegarder les modules globaux installés (histoire de les réinstaller plus tard) :
ls /usr/local/lib/node_modules > ~/node_modules.txt
Ensuite on vire les modules en question et le répertoire caché de npm (côté user) :
sudo rm -rf /usr/local/lib/node_modules
sudo rm -rf ~/.npm
Puis on désinstalle Node.js :
brew uninstall --force node
Installation
Normalement, arrivé à ce point, on a plus Node.js sur la machine (pas plus que npm vu qu’il en fait partie).
On passe à l’installation :
brew install node
Puis pour chacun des modules globaux listés au début :
npm install -g <module>
Et c’est tout, tout devrait fonctionner comme prévu.
On peut vérifier les versions de Node et npm, au passage :
node -v
npm -v
Ce qui me donne respectivement :
v11.13.0
6.7.0
Et on peut terminer par un :
brew doctor
Histoire de vérifier que tout va bien, suivi si nécessaire (c’est normalement indiqué par la commande précédente) d’un :
brew cleanup
Pour faire un nettoyage des trucs qui ne servent plus à rien.
Voili, voilà !
1 De saymonz -
Cet article résume bien pourquoi ma curiosité envers Node s’est arrêtée (mais c’est un peu la même merde avec Python/pip et d’autres) : avant les choses paraissaient simples, on avait un gestionnaire de paquets dans son pingouin et ce qui n’était pas dispo dessus on le mettait en “local” dans son projet…
Maintenant chaque langage vient avec son gestionnaire de paquet qui bien souvent cherche à se mettre à jour lui-même (même sur une Arch qui ne laisse pourtant pas au paquets le temps de vieillir) et ça fout le bordel.
Sans compter que autant je vois très bien l’intérêt pour les dév de pouvoir spécifier précisément avec quelle version leur appli travaille, autant je trouve ça aberrant de devoir copier “la moitié de l’internet” avec chaque appli qu’on veut faire tourner.
J’en étais là dans ma tête quand la mode des conteneurs/VMs a déboulé. Donc maintenant pour chaque appli il faut un OS (allégé, certes, mais) complet… WTF?
Pour le geek à mi-temps que je suis on est passé de “installe tout avec le gestionnaire de paquets de l’OS pour que ça soit propre” à “installe un OS par application avec des dépendances en doublons pour chacune d’elle”. WTF² ?
En plus, tout ça suppose que le stockage, la puissance de calcul et la bande passante sont des denrées illimitées… À quand le retour à une sorte d’écologie logicielle ?
2 De Franck -
Tu résumes très bien mon sentiment à ce sujet saymonz, en particulier sur les ressources nécessaires par les conteneurs en tout genre ou les éco-systèmes requis par les applis.
Cela dit, je ne critique pas les avantages, comme l’isolation par exemple. Est-ce que se ça justifie ? C’est un vaste débat (j’ouvre la boîte à troll là) :-)
3 De biou -
Ta version de npm ne semble pas alignée avec celle de node.
Le problème peut aussi venir de brew ou de la config de ton OS, paths, etc.
4 De biou -
Sorry j’ai essayé de faire un commentaire constructif, j’ai oublié le petit troll de service ;)
Comment se fait-il qu’Apple ne fournisse toujours pas de gestionnaire de paquets digne de ce nom en 2019? Brew est et restera une solution bricolée. Linux a de bons gestionnaires de paquets depuis longtemps, Microsoft s’y est mis. Qu’attend Apple?
5 De Franck -
Comment ça pas alignée ? J’ai juste installé Node (avec brew), le npm est celui fourni avec, non ?
Quant au gestionnaire de paquet sous OS X… :-D