我有一个Phoenix(1.4)LiveView(0.8)应用程序,我想在启动服务器时自动打开浏览器窗口。有人知道这是否可以完成吗?
我尝试查看是否可以像在FE应用程序中所做的那样在Webpack中配置该选项,但是我无法使其正常工作。
谢谢!
答案 0 :(得分:1)
最清晰的方法是执行自定义mix
任务,唯一的问题是如何真正打开浏览器。这已在docs
中实现:
defp browser_open(path) do
start_browser_command =
case :os.type do
{:win32, _} ->
"start"
{:unix, :darwin} ->
"open"
{:unix, _} ->
"xdg-open"
end
if System.find_executable(start_browser_command) do
System.cmd(start_browser_command, [path])
else
Mix.raise "Command not found: #{start_browser_command}"
end
end
现在剩下的就是做一个自定义任务,从config中获取主机和端口,并在其中调用phx.server
任务并打开浏览器:
defmodule Mix.Tasks.Hello do
use Mix.Task
def run(_) do
Mix.Task.run("phx.server")
env = Application.fetch_env!(:phoenix_test, PhoenixTestWeb.Endpoint)
browser_open("http://#{env[:url][:host]}:#{env[:http][:port]}")
end
end
然后您可以使用mix hello
调用任务。