README-ja.md
Go でウェブサイトを開発し始め、 gin を使っていた時、gin にはライブリロード機能がないのが残念でした。
そこで探し回って fresh を試してみましたが、あまり柔軟ではないようでした。なので、もっと良いものを書くことにしました。そうして、 Air が誕生しました。
加えて、 pilu に感謝します。fresh がなければ、 Air もありませんでした。:)
Air は Go アプリケーション開発用のライブリロードコマンドラインユーティリティです。プロジェクトのルートディレクトリで air を実行し、放置し、コードに集中してください。
注:このツールは本番環境へのホットデプロイとは無関係です。
air は引数による設定をサポートします:
利用可能なコマンドライン引数を以下のコマンドで確認できます:
air -h
または
air --help
もしビルドコマンドと起動コマンドを設定したい場合は、設定ファイルを使わずに以下のようにコマンドを使うことができます:
air --build.cmd "go build -o bin/api cmd/run.go" --build.entrypoint "./bin/api"
入力値としてリストを取る引数には、アイテムを区切るためにコンマを使用します:
air --build.cmd "go build -o bin/api cmd/run.go" --build.entrypoint "./bin/api" --build.exclude_dir "templates,build"
従来の build.bin フィールドは非推奨で、今後のリリースで削除される予定です。代わりに build.entrypoint を使ってください。
build.entrypoint は実行ファイルだけを指定する文字列、または実行ファイルとデフォルト引数を並べた文字列配列のどちらでも指定できます。
go install を使う場合(推奨)go 1.25以上を使う場合:
go install github.com/air-verse/air@latest
go get -tool を使う場合go 1.25以上を使う場合:
go get -tool github.com/air-verse/air@latest
# 使い方は以下の通りです:
go tool air -v
install.sh を使う場合# バイナリは $(go env GOPATH)/bin/air にインストールされます
curl -sSfL https://raw.githubusercontent.com/air-verse/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
# または./bin/にインストールすることもできます
curl -sSfL https://raw.githubusercontent.com/air-verse/air/master/install.sh | sh -s
air -v
# バイナリは /usr/local/bin/air にインストールされます
curl -sSfL https://goblin.run/github.com/air-verse/air | sh
# 任意のパスに配置することもできます
curl -sSfL https://goblin.run/github.com/air-verse/air | PREFIX=/tmp sh
mise use -g air
cosmtrek/air という Docker イメージをプルしてください。
docker/podman run -it --rm \
-w "<PROJECT>" \
-e "air_wd=<PROJECT>" \
-v $(pwd):<PROJECT> \
-p <PORT>:<APP SERVER PORT> \
cosmtrek/air
-c <CONF>
通常のアプリケーションのように継続的に air を使いたい場合は、 ${SHELL}rc (Bash, Zsh, etc…)に関数を作成してください。
air() {
podman/docker run -it --rm \
-w "$PWD" -v "$PWD":"$PWD" \
-p "$AIR_PORT":"$AIR_PORT" \
docker.io/cosmtrek/air "$@"
}
<PROJECT>はコンテナ内のプロジェクトのパスです。 例:/go/example
コンテナに接続したい場合は、 --entrypoint=bash を追加してください。
Docker で動作するとあるプロジェクト:
docker run -it --rm \
-w "/go/src/github.com/cosmtrek/hub" \
-v $(pwd):/go/src/github.com/cosmtrek/hub \
-p 9090:9090 \
cosmtrek/air
別の例:
cd /go/src/github.com/cosmtrek/hub
AIR_PORT=8080 air -c "config.toml"
これは $PWD を現在のディレクトリに置き換え、 $AIR_PORT は公開するポートを指定し、 $@ は-cのようなアプリケーション自体の引数を受け取るためのものです。
.bashrc または .zshrc に alias air='~/.air' を追加すると、入力の手間が省けます。
まずプロジェクトを移動します。
cd /path/to/your_project
最もシンプルな使い方は以下の通りです。
# カレントディレクトリの `.air.toml` を優先し、見つからない場合はデフォルト値を使います
air
特定の設定ファイルを明示的に使う場合は -c を指定します。
air -c .air.toml
次のコマンドを実行することで、カレントディレクトリに .air.toml 設定ファイルを初期化できます。
air init
その次に、追加の引数なしで air コマンドを実行すると、 .air.toml ファイルが設定として使用されます。
air
air_example.tomlを参考にして設定を編集します。
air コマンドの後に引数を追加することで、ビルドしたバイナリを実行するための引数を渡すことができる。
# ./tmp/main benchを実行します
air bench
# ./tmp/main server --port 8080を実行します
air server --port 8080
air コマンドに渡す引数とビルドするバイナリを -- 引数で区切ることができる。
# ./tmp/main -hを実行します
air -- -h
# カスタム設定で air を実行し、ビルドされたバイナリに -h 引数を渡す
air -c .air.toml -- -h
services:
my-project-with-air:
image: cosmtrek/air
# working_dir の値はマップされたボリュームの値と同じでなければなりません
working_dir: /project-package
ports:
- <any>:<any>
environment:
- ENV_A=${ENV_A}
- ENV_B=${ENV_B}
- ENV_C=${ENV_C}
volumes:
- ./project-relative-path/:/project-package/
air -dは全てのログを出力します。
Dockerfile
# 1.25以上の任意のバージョンを選択してください
FROM golang:1.25-alpine
WORKDIR /app
RUN go install github.com/air-verse/air@latest
COPY go.mod go.sum ./
RUN go mod download
CMD ["air", "-c", ".air.toml"]
docker-compose.yaml
version: "3.8"
services:
web:
build:
context: .
# Dockerfile へのパスを正してください
dockerfile: Dockerfile
ports:
- 8080:3000
# ライブリロードのために、コードベースディレクトリを /app ディレクトリにバインド/マウントすることが重要です
volumes:
- ./:/app
export GOPATH=$HOME/xxxxx
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export PATH=$PATH:$(go env GOPATH)/bin #この設定を .profile で確認し、追加した場合は .profile を source するのを忘れないでください!!!
bin の`'をエスケープするには\を使用したほうが良いです。関連する issue: #305
[build]
cmd = "/usr/bin/true"
詳細のために #512 の issue を参照してください。
include_dir 、include_ext 、include_file に配置していることを確かめてください。</body> タグがあることを確かめてください。[proxy]
enabled = true
proxy_port = <air proxy port>
app_port = <your server port>
必要な Go のバージョンは 1.25+ です(go.mod を参照)。
# プロジェクトをフォークしてください
# クローンしてください
mkdir -p $GOPATH/src/github.com/cosmtrek
cd $GOPATH/src/github.com/cosmtrek
git clone [email protected]:<YOUR USERNAME>/air.git
# 依存関係をインストールしてください
cd air
make ci
# コードを探検してコーディングを楽しんでください!
make install
Pull Request を受け付けています。
# master にチェックアウトします
git checkout master
# リリースに必要なバージョンタグを付与します
git tag v1.xx.x
# リモートにプッシュします
git push origin v1.xx.x
# CI が実行され、新しいバージョンがリリースされます。約5分待つと最新バージョンを取得できます
多くのサポーターの方々に心から感謝します。私はいつも皆さんの優しさを忘れません。