Maison >développement back-end >Golang >Comment héberger Hugo à Vercel
J'ai décidé de partir avec Hugo pour créer mon site internet personnel. La seule chose sur laquelle j'ai basé mon choix était le temps de construction. Je pensais qu'Hugo était dans la même ligue qu'Astro en ce qui concerne les avantages de la gestion de contenu, mais ce n'est pas encore tout à fait là. Ou bien, je peux dire qu'il a son propre chemin puisqu'il est plus ancien que la plupart des autres générateurs de sites statiques que j'ai rencontrés. De plus, il s'agit d'une application Go, ce qui est un autre facteur important à prendre en compte lors de l'évaluation des choix technologiques.
Oui, il est possible d'étendre les fonctionnalités de Hugo. Vous pouvez ajouter des fonctionnalités manquantes via des modules qui modifient le processus de construction. Par exemple, il me manquait le support MDX dans Hugo. Je peux résoudre ce problème grâce à un module qui restitue MDX au moment de la construction. Je ne l'ai pas essayé moi-même, mais cela semble possible.
Je peux également potentiellement ajouter un pipeline de construction parallèle, si nous pouvons l'appeler ainsi. Cela peut impliquer l'utilisation d'outils tels que Vite, Turbo ou Webpack. Cependant, cette approche compliquerait probablement le processus de construction et ralentirait potentiellement le mécanisme de construction principal de Hugo. Ces intégrations ont été utilisées pour incorporer Tailwind et d'autres bibliothèques frontales. Fait intéressant, si vous examinez les fonctionnalités à venir d'Hugo, vous verrez des plans d'intégration de Tailwind et d'autres technologies.
J'ai utilisé des outils Hugo tiers, en particulier HugoMods. Le module d'icônes a retenu mon attention car je souhaitais ajouter des icônes à mon site Web sans importer une police entière. Lors de la recherche, le module Icônes a été la première chose qui est apparue. Il propose une variété de fournisseurs d'icônes, notamment Bootstrap, Font Awesome, Feather, etc.
Localement, tout a parfaitement fonctionné. Cependant, après avoir poussé mes modifications, rien ne semblait changer. En vérifiant la page de build dans Vercel, j'ai remarqué...
[12:10:48.021] Running build in Washington, D.C., USA (East) – iad1 [12:10:48.210] Cloning github.com/mohessaid/mohessaid (Branch: main, Commit: eaeecd1) [12:10:48.449] Cloning completed: 238.727ms [12:10:49.038] Restored build cache from previous deployment (5i5sCdjnY3KZXgGBqbqfgJUjrwYB) [12:10:49.132] Running "vercel build" [12:10:49.714] Vercel CLI 39.0.2 [12:10:50.440] Total in 3 ms [12:10:50.441] Error: failed to load modules: failed to download modules: binary with name "go" not found in PATH [12:10:50.446] Error: Command "hugo --gc" exited with 1 [12:10:50.625]
Lorsque Hugo a tenté d'installer les modules nécessaires à la construction, il n'a pas pu trouver les binaires Go. J'ai demandé l'aide de Claude et de GPT, dans l'espoir d'une solution rapide, mais ils n'ont pas été en mesure de m'apporter une aide directe. J'ai dû les guider à chaque étape et finalement, j'ai perdu espoir en leur capacité à m'aider.
J'avais même utilisé Claude pour une solution qui avait presque réussi, si ce n'était les limitations des champs de saisie de Vercel.
J'ai accédé à la page des paramètres de mon site Web dans le tableau de bord Vercel. Dans l'onglet "Variables d'environnement", j'ai ajouté une variable nommée "HUGO_VERSION" et défini sa valeur sur la dernière version disponible de Hugo.
Dans l'onglet "Général", sélectionnez Hugo comme préréglage du framework. Remplacez ensuite la commande build par ce qui suit :
curl -L https://go.dev/dl/go1.22.2.linux-amd64.tar.gz -o go1.22.2.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz && export PATH=$PATH:/usr/local/go/bin && go env GOTPATH && hugo --gc --minify
Remarque : j'utilise la version 1.22.2 de Go, qui est la dernière au moment de la rédaction. Vous pouvez modifier la version pour qu'elle corresponde à vos besoins spécifiques.
Je comprends votre scepticisme. Comme vous, je pensais avoir une solution intelligente. Au départ, j'ai tenté d'installer Go dans le champ Commande d'installation, mais cela a lamentablement échoué. Le processus de construction de Vercel n'a pas pu localiser les binaires, malgré mon dépannage exhaustif.
Après avoir exploré d'innombrables solutions potentielles sans succès, je suis tombé sur un problème GitHub où quelqu'un avait placé l'intégralité de son processus d'installation directement dans le champ de construction. En reproduisant leur approche, j’ai finalement réussi. À ce stade, la solution parle d'elle-même.
Tenter de placer ces étapes dans le champ de commande d'installation entraînera probablement des erreurs.
Ou celui-ci
L'installation d'Amazon Linux Extras ne résoudra pas le problème de l'installation de Go. La version de Go disponible via cette méthode est considérablement obsolète. J'ai testé cette approche de manière approfondie et j'ai rencontré des échecs constants. J'ai essayé d'utiliser les gestionnaires de packages yum et dnf dans la commande d'installation, mais aucune des deux méthodes n'a réussi à résoudre le problème du binaire Go.
Enfin, j'ai partagé ce post sur différentes plateformes pour tester laquelle d'entre elles arrive en premier dans les résultats de recherche. J'étais prêt à le faire il y a des mois. Cependant, je n'ai pas pu poster le bon message. Vous pouvez suivre l'expérience à partir d'ici.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!