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 !
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)}
Copier après la connexion
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
Copier après la connexion
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
Copier après la connexion
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
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>
Copier après la connexion
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
Copier après la connexion
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
Copier après la connexion
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
Copier après la connexion
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
Copier après la connexion
Enfin, spécifiez le nom de l'image Docker
. cosmtrek / air
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
Copier après la connexion
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
Copier après la connexion
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
Copier après la connexion
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
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
Copier après la connexion
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
Copier après la connexion
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
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
Copier après la connexion
Au lieu d'utiliser la commande
habituelle pour exécuter l'application, utilisez la commande go run main.go
. fresh
fresh
Copier après la connexion
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:
Copier après la connexion
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!