Maison  >  Article  >  développement back-end  >  Partagez 5 façons de recharger automatiquement les programmes Go lorsque les fichiers changent

Partagez 5 façons de recharger automatiquement les programmes Go lorsque les fichiers changent

藏色散人
藏色散人avant
2020-11-03 15:19:582846parcourir
Ci-dessous

Tutoriel Partagez 5 façons de recharger automatiquement les programmes Go lorsque les fichiers changentlang Section pour partager la méthode de chargement automatique des programmes Partagez 5 façons de recharger automatiquement les programmes Go lorsque les fichiers changent lors de la modification de 5 fichiers à modifier, j'espère que cela sera utile aux amis dans le besoin !

Partagez 5 façons de recharger automatiquement les programmes Go lorsque les fichiers changent

Beaucoup de gens espèrent avoir l'effet d'un chargement de code en temps réel (compilation à chaud) lors de l'écriture de GO, en particulier ceux qui sont habitués à utiliser des langages interprétés tels que JavaScript, Python et Ruby, cet article présente 5 façons de recharger les programmes Partagez 5 façons de recharger automatiquement les programmes Go lorsque les fichiers changent en temps réel.

Cet article suppose que le compilateur Partagez 5 façons de recharger automatiquement les programmes Go lorsque les fichiers changent a été installé et que le chemin a été ajouté à la variable d'environnement PATH. GOPATH/bin

Avant de commencer, nous créons d'abord un serveur Web simple qui peut renvoyer le contenu de la réponse "Hello, World".

package mainimport (
    "net/http")func main() {
    http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello, World"))
    })

    http.ListenAndServe(":5000", nil)}

Méthode 1 : Utiliser Air

Air est un programme en ligne de commande qui peut fournir un chargement de code en temps réel pour les programmes Partagez 5 façons de recharger automatiquement les programmes Go lorsque les fichiers changent.

Installez Air en exécutant la commande suivante.

go get -u github.com/cosmtrek/air
Ensuite, créez le fichier de configuration Air

dans le répertoire racine de votre projet. .air.conf

# .air.conf
# toml配置文件来源于 [Air](https://github.com/cosmtrek/air)# 工作区间
# .(当前目录)或绝对路径, 注意这些目录都在根目录下面.root = "." tmp_dir = "tmp"[build]# 只是普通的shell命令。 可以使用`make`。
cmd = "go build -o ./tmp/main ."# `cmd`配置命令输出的二进制文件的位置。
bin = "tmp/main"# 自定义二进制输出。
full_bin = "APP_ENV=dev APP_USER=air ./tmp/main"# 监听的文件扩展后缀列表。
include_ext = ["go", "tpl", "tmpl", "html"]# 忽略这些文件扩展名或目录。
exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules"]# 如果指定,则监听包含这些文件。
include_dir = []# 忽略文件列表.exclude_file = []# 如果文件修改太频繁,则不必在每次修改时都立刻触发构建,设置触发等待时间。
delay = 1000 # ms
# 发生编译错误时,是否停止旧的二进制程序。
stop_on_error = true# 该日志文件放置在tmp_dir中。
log = "air_errors.log"[log]# 日志是否显示时间
time = false[color]# 自定义每类输出的颜色。 如果找不到这个颜色,使用原本的日志输出演示。
main = "magenta"watcher = "cyan"build = "yellow"runner = "green"[misc]# 退出时是否删除临时目录
clean_on_exit = true
La configuration est simple et claire, veuillez l'ajuster en fonction de la situation de votre projet.

Enfin, au lieu d'utiliser la commande

habituelle pour exécuter un programme Partagez 5 façons de recharger automatiquement les programmes Go lorsque les fichiers changent, utilisez la commande go run pour démarrer le programme. air

Méthode 2 : Docker pour exécuter Ari

Cette méthode nécessite Docker, si vous ne l'avez pas installé, vous pouvez suivre

Nous le ferons utilisez toujours la bibliothèque Air, le profil Air est donc toujours requis. Si ce n'est pas déjà fait, veuillez créer un profil.

L'image Docker

est livrée avec la commande Air installée et la variable d'environnement GOPATH est définie sur cosmtrek/air. /go

Il nous suffit de monter notre répertoire de projet dans le GOPATH du conteneur Docker et d'utiliser -p pour exposer les ports que nous devons utiliser. Nous pouvons y parvenir en exécutant la commande docker run :

docker run -it --rm -w <working_dir> -v <project_folder>:<mount_point> -p <host_port>:<container_port> <image_name></image_name></container_port></host_port></mount_point></project_folder></working_dir>
Dans mon cas, je devais exécuter la commande suivante :

docker run -it --rm -w /go/src/github.com/praveen001/live-reloading -v /go/src/github.com/praveen001/live-reloading:/go/src/github.com/praveen001/live-reloading -p 5000:5000 cosmtrek/air

Explication :

Utilisez le paramètre -v pour monter le répertoire du projet

dans le répertoire /home/praveen/go/src/github.com/praveen001/live-reloading dans le GOPATH à l'intérieur du conteneur. /go/src/github.com/praveen001/live-reloading

-v /home/praveen/go/src/github.com/praveen001/live-reloading:/go/src/github.com/praveen001/live-reloading
Utilisez le paramètre

pour spécifier le répertoire de montage comme répertoire de travail. -w

-w /go/src/github.com/praveen001/live-reloading
Le serveur Web écoute sur le port 5000, le port du conteneur 5000 doit donc être exposé au port hôte 5000 à l'aide de l'indicateur

. -p

-p 5000:5000
Enfin, spécifiez le nom de l'image Docker

. cosmtrek / air

Méthode 3 : Utiliser Gin

Gin est un autre programme en ligne de commande pour le rechargement en direct des applications Partagez 5 façons de recharger automatiquement les programmes Go lorsque les fichiers changent.

Installez Gin en exécutant la commande suivante.

go get github.com/codegangsta/gin
Au lieu d'utiliser la commande

habituelle pour exécuter l'application, utilisez la commande go run main.go. gin

Dans mon cas, le paramètre

a demandé à Gin d'écouter sur le port 5000 et le paramètre --appPort a demandé au proxy Gin d'écouter sur le port 3000. --port

gin --appPort 5000 --port 3000
Utilisez maintenant l'adresse

pour accéder au programme Gin.http://localhost:3000

Si vous souhaitez exclure le répertoire d'écoute, vous pouvez utiliser le paramètre

, par exemple : --excludeDir

gin --appPort 5000 --port 3000 --excludeDir ./frontend
Si vous utilisez Gin pour charger un programme qui ne démarre pas la surveillance des ports, vous devez utiliser le paramètre

. Mais Gin ira toujours au port 5000. --immediate

Vous pouvez trouver tous les paramètres pris en charge dans le Github de Gin

Méthode 4 : Utiliser Nodemon

Nodemon en est une autre pour recharger la commande en temps réel. programme en ligne pour les applications Node. Mais la commande de lancement peut être utilisée pour lancer d'autres applications en utilisant le paramètre

pour définir la commande de lancement. --exec

Nodemon nécessite l'installation de Nodejs et NPM. S'il n'est pas installé, vous pouvez l'installer selon la documentation officielle de nodejs.

Exécutez la commande suivante pour installer nodemon :

npm install -g nodemon
Maintenant, nous pouvons utiliser Nodemon pour exécuter le serveur Web. en exécutant la commande suivante :

nodemon --exec go run main.go --signal SIGTERM
Si vous souhaitez configurer Nodemon, créez un fichier de configuration

dans le répertoire racine de votre projet. Exemple de fichier de configuration fonctionnel completnodemon.json

Méthode 5 : Utilisation de Fresh

Fresh est une autre implémentation de GO pour le rechargement en temps réel des programmes Partagez 5 façons de recharger automatiquement les programmes Go lorsque les fichiers changent

Installer Fresh

go get github.com/pilu/fresh
Au lieu d'utiliser la commande

habituelle pour exécuter l'application, utilisez la commande go run main.go. fresh

fresh
Pour configurer Fresh, vous devez créer un fichier de configuration

dans le répertoire racine de votre projet. runner.conf

Ceci est un exemple de fichier de configuration.

root:              .tmp_path:          ./tmp
build_name:        runner-build
build_log:         runner-build-errors.log
valid_ext:         .go, .tpl, .tmpl, .html
no_rebuild_ext:    .tpl, .tmpl, .html
ignored:           assets, tmp
build_delay:       600colors:            1log_color_main:    cyan
log_color_build:   yellow
log_color_runner:  green
log_color_watcher: magenta
log_color_app:

Résumé

Il existe de nombreux autres outils, tels que :

  • Facebook's Watchman
  • Réaliser
  • Reflex
  • Même une solution sur mesure

Adresse d'origine : https ://techinscribe.com/5-ways-to-live-reloading-go-applications/

Adresse de traduction : https://learnku.com/go/t/51189

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer