As of December 1st, 2019 Buffalo, and all related packages, require Go Modules and the use of the GOPATH is no longer supported.

Please see this blog post for more information https://blog.gobuffalo.io/the-road-to-1-0-requiring-modules-5672c6b015e5.

Générer un nouveau projet

Vous disposez maintenant d'une installation de Buffalo fonctionnelle. Dans cette section, vous allez apprendre comment créer une toute nouvelle application web, en utilisant la commande buffalo.

Créer un nouveau projet

Le but de Buffalo est de pouvoir construire de nouvelles applications Web en Go, aussi vite et simplement que possible. Peut-on faire plus simple qu'un générateur d'application ?

Commencez par vous placer dans votre $GOPATH et créez votre nouvelle application !

$ cd $GOPATH/src/github.com/$USER/

Assurez-vous que $GOPATH/bin est dans votre $PATH, puis :

$ buffalo new coke

Cette commande va vous générer une nouvelle application Buffalo dénommée coke, avec le minimum syndical :

  • la structure du framework Buffalo et la configuration par défaut (pop/soda avec support pour PostgreSQL),
  • toutes les dépendances Go nécessaires pour exécuter votre application,
  • les dépendances frontend et une configuration fonctionnelle pour webpack
  • et un dépôt Git initial.

$ buffalo new coke
Buffalo version 0.16.23

      create  .buffalo.dev.yml
      create  assets/images/logo.svg
      create  assets/css/application.scss
      create  assets/images/favicon.ico
      create  assets/js/application.js
      create  .babelrc
      create  package.json
      create  public/assets/.keep
      create  webpack.config.js
         run  yarn install --no-progress --save
yarn install v0.27.5
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 11.71s.
      create  models/models.go
      create  models/models_test.go
      create  grifts/db.go
         run  go get github.com/gobuffalo/pop/...
      create  ./database.yml
         run  goimports -w coke/grifts/db.go coke/models/models.go coke/models/models_test.go
      create  Dockerfile
      create  .dockerignore
         run  go get -u golang.org/x/tools/cmd/goimports
      create  README.md
      create  actions/actions_test.go
      create  actions/app.go
      create  actions/home.go
      create  actions/home_test.go
      create  actions/render.go
      create  .codeclimate.yml
      create  .env
      create  grifts/init.go
      create  inflections.json
      create  locales/all.en-us.yaml
      create  main.go
      create  public/robots.txt
      create  templates/_flash.html
      create  templates/application.html
      create  templates/index.html
         run  go get -t ./...
         run  goimports -w actions/actions_test.go actions/app.go actions/home.go actions/home_test.go actions/render.go grifts/db.go grifts/init.go main.go models/models.go models/models_test.go
      create  .gitignore
         run  git init
Initialized empty Git repository in /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/.git/
         run  git add .
         run  git commit -q -m Initial Commit
INFO[0055] Congratulations! Your application, coke, has been successfully built!

 
INFO[0055] You can find your new application at:
/Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke 
INFO[0055] 
Please read the README.md file in your new application for next steps on running your application.

Créer une application personnalisée

Les options par défaut sont suffisantes, mais ne peuvent pas convenir à tout le monde. Buffalo vous permet donc de changer cette configuration via des flags à passer à la commande new.

Vous pouvez lister les flags disponibles en utilisant la commande help :

$ buffalo help new
Creates a new Buffalo application

Usage:
  buffalo new [name] [flags]

Flags:
      --api                  skip all front-end code and configure for an API server
      --bootstrap int        specify version for Bootstrap [3, 4] (default 4)
      --ci-provider string   specify the type of ci file you would like buffalo to generate [none, travis, gitlab-ci] (default "none")
      --config string        config file (default is $HOME/.buffalo.yaml)
      --db-type string       specify the type of database you want to use [cockroach, mysql, postgres, sqlite3] (default "postgres")
      --docker string        specify the type of Docker file to generate [none, multi, standard] (default "multi")
  -f, --force                delete and remake if the app already exists
  -h, --help                 help for new
      --skip-config          skips using the config file
      --skip-pop             skips adding pop/soda to your app
      --skip-webpack         skips adding Webpack to your app
      --skip-yarn            use npm instead of yarn for frontend dependencies management
      --vcs string           specify the Version control system you would like to use [none, git, bzr] (default "git")
  -v, --verbose              verbosely print out the go get commands
      --with-dep             adds github.com/golang/dep to your app

Vous pouvez choisir de générer une application de type API, en excluant les fichiers propres à l'interface utilisateur. Vous voulez utiliser un système d'intégration continue ? Ou même utiliser votre propre dépendance pour gérer les interactions avec la base de données ? Utilisez les flags !

Changer la config par défaut

Par défaut, la commande buffalo new recherche le fichier de configuration $HOME/.buffalo.yml, et tente de le charger s'il existe. Vous pouvez écraser les options de ce fichier en passant directement les flags d'options nécessaires, ou en utilisant l'option --config pour prendre un compte un autre fichier YAML à la place. Utilisez l'option --skip-config si vous ne souhaitez pas que la commande buffalo new charge un fichier de configuration par défaut.

Voici un exemple de fichier de configuration .buffalo.yml :

skip-yarn: true
db-type: postgres
bootstrap: 4
with-dep: true

Lancer votre application en mode développement

Avant de démarrer Buffalo pour la première fois, veuillez consulter la documentation sur les bases de données pour paramétrer votre application correctement.

L'un des inconvénients du développement en Go est l'absence de « rechargement » de code. Cela signifie qu'à chaque fois que vous modifiez votre code, vous devez stopper manuellement votre application, la recompiler et enfin la redémarrer. Buffalo trouve cela ennuyeux, et veut vous faciliter la vie.

$ buffalo dev

La commande dev surveille les fichiers .go, .html et le dossier des ressources graphiques par défaut. Elle se charge de recompiler et redémarrer votre application automatiquement, pour que vous n'ayez pas à vous en soucier.

Lancez la commande buffalo dev et affichez la page localhost:3000/ pour voir tous vos changements en direct !

La toute nouvelle application Coke.

Lancer le serveur de développement sur un port personnalisé

Il arrive souvent que vous ayez déjà une application utilisant le port 3000. Vous pouvez configurer le port utilisé par le serveur de développement en utilisant la variable d'environnement PORT :

$ PORT=3001 buffalo dev

Vous pouvez également consulter le chapitre sur les variables d'environnement pour plus d'informations sur la configuration de Buffalo.

Prochaines étapes