À propos du projet
Ce dépôt fournit un ensemble de modèles courants de structure de projet historiques et émergents pour les applications Go. Il ne s'agit PAS explicitement d'une norme officielle définie par l'équipe principale de Go, mais plutôt d'un effort communautaire visant à documenter les conventions observées dans l'écosystème Go.
La structure définit les répertoires clés suivants :
- /cmd : Applications principales ; chaque sous-répertoire correspond à un nom exécutable, contenant des fonctions main minimales qui importent du code depuis /internal et /pkg.
- /internal : Code privé d'application et de bibliothèque, imposé par le compilateur Go lui-même (depuis Go 1.4) pour empêcher les imports externes. Peut être imbriqué à n'importe quel niveau.
- /pkg : Code bibliothèque destiné à un usage externe. Indique que le code est sûr pour quiconque veut l'importer, bien que /internal soit l'alternative imposée par le compilateur pour les paquets privés.
- /vendor : Dépendances de l'application gérées via Go Modules (go mod vendor).
- /api : Spécifications OpenAPI/Swagger, fichiers de schéma JSON, définitions de protocoles.
- /web : Ressources statiques web, gabarits côté serveur, SPAs.
- /configs : Modèles de fichiers de configuration ou configurations par défaut.
- /init : Configurations d'initialisation système (systemd, upstart, sysv) et de gestionnaires de processus.
- /scripts : Scripts de construction, d'installation et d'analyse afin de garder le Makefile racine simple.
- /build : Empaquetage (AMI, Docker, deb, rpm) et configurations CI.
- /deployments : Configurations de déploiement IaaS/PaaS, orchestration de conteneurs (docker-compose, kubernetes/helm, terraform).
- /test : Applications de test externes supplémentaires et données de test.
- /docs, /tools, /examples, /third_party, /githooks, /assets, /website : Répertoires annexes pour la documentation, les outils, les exemples, les assistants externes, les hooks git, les ressources et les données du site web.
Le README déconseille explicitement l'utilisation d'un répertoire /src (une convention Java) et recommande de commencer simplement (un seul main.go et go.mod) pour les petits projets ou les preuves de concept, en adoptant davantage de structure au fur et à mesure que les projets grossissent. Il recommande Go Modules (prêt pour la production depuis Go 1.14), gofmt et staticcheck pour le formatage et la vérification statique. Le README est disponible en plus de 18 langues, dont le chinois, le japonais, le coréen, le français, l'espagnol, le russe, l'hindi, le bengali et d'autres.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.