Djangoアプリの開発効率化のためにホットリロード(ライブリロード)をしたかったので、関連パッケージを調べたところ、4つの候補( livereload, django-livereload, python-livereload, django-livereload-server )が見つかったが、どれを使うべきか迷った。結果、
livereload を使えばできたが、パッケージを書き換える作業が別途必要だったので、そのメモを共有します。(※他の3つは試していません)
注意点:
- SASSでは使えないかもしれない(※未確認)
- 今回はChrome拡張機能も使ったが、他のパッケージを使えば、Chrome拡張機能は不要かもしれない
手順:
【サーバ側】
-
パッケージ LiveReload をインストール
% pipenv install --dev livereload
-
パッケージ内のserver.py ( パスの例: venv/lib/python3.8/site-packages/livereload/server.py ) を任意の名前(例:server2.py)に変更
-
livereload.py( パスの例: venv/lib/python3.8/site-packages/livereload/management/commands/livereload.py ) の 6行目のimport文を変更
変更前: from livereload.server import Server
変更後: from livereload.server2 import Server ( ※ファイル名をserver2.pyに変更した場合 )( 画面例 ) -
settiings.py の INSTALLED_APPS に 'livereload' を追加
('django.contrib.staticfiles'がある場合はそれよりも手前に追加) -
ターミナルで以下のコマンドを実行
% ./manage.py livereload
(このように表示されていれば成功) -
デバッグ実行開始
【クライアント側】
- Chrome拡張機能 「LiveReload」 をインストール
- ホットリロードしたい対象のページをChromeで開き、LiveReload拡張機能のアイコンをクリック(これでこのページでのホットリロードが有効になる)
以上の操作で、ソースコードを修正して保存すると自動でブラウザ側がリロードされるようになります。
(参考)ホットリロードされる例
ちなみに、ホットリロードを有効にすると、このように PCとスマホレイアウトの同時確認の効率が特に上がります(この例では、「⭐」の1文字を追加して、保存しています)。
(私は実際にはメイン画面にソースコードを表示して、セカンダリモニタにPCとスマホの画面を表示しています)