情報: 私は、react-native を使用してモバイル アプリを開発するために使用される Emacs ユーザーです。
説明
最近、私はフラッターアプリを開発しようとしていますが、そのhot-reload
部分にこだわっていlib/*dart
ます。
私が考えているのは、 の変更を監視し、フラッタープロセスに自動的lib/*dart
に渡すことです。r
flutter run
プロセスにたどり着くにはどうすればよいですか?
解決
Emacs ソリューション
保存時にホット リロードを何度も読んだ後、Emacs の構成ファイルを更新しました。
(require 'dart-mode)
(defun auto-reload ()
(shell-command "kill -s SIGUSR1 $(cat /tmp/flutter.pid) && echo 'reload flutter...'"))
(add-hook 'dart-mode-hook
(lambda ()
(add-hook 'after-save-hook 'auto-reload nil 'make-it-local)))
信じられないほど簡単です...プロセスを強制終了すると、シェルスクリプトを介してプロセスにシグナルをflutter run
送信した後、プロセスが自動的にリロードされます。kill -SIGUSR1
flutter run
ありがとう@pskink、頭を使ってもう一度試してみたら、問題は解決しました。
説明をlinux signal
もう一度確認しましたkill
。コマンドは次のように説明されています。
指定されたプロセス、指定されたプロセス グループのすべてのメンバー、またはシステム上のすべてのプロセスにシグナルを送信します。
プロセスを無作法に殺すだけではありません...そしてkill
、コマンドラインでの説明は次のとおりです。
kill [-s sigspec | -n signum | -sigspec] pid | jobspec
...or
kill -l [sigspec]
ただし、フラッター--pid-file
のフラグは次のように記述されます。
プロセス ID を書き込むファイルを指定します。SIGUSR1 を送信してホット リロードをトリガーし、SIGUSR2 を送信してホット リスタートをトリガーできます。
私たちが に信号をkill -SIGUSR1 $(cat /tmp/flutter.pid)
送ると、それが起こったのです。SIGURS1
flutter process
プロセスr
の「画面」に送信できるかどうか、まだ疑問に思っています。flutter run