Есть ли способ автоматически запустить браузер при запуске сервера в Phoenix? - PullRequest
1 голос
/ 17 марта 2020

У меня есть приложение Phoenix (1.4) LiveView (0.8), и я хотел бы, чтобы окно браузера открывалось автоматически при запуске сервера. Кто-нибудь знает, можно ли это сделать, и если да, то как?

Я попытался проверить, могу ли я настроить опцию в Webpack, как я это делал для приложений FE, но я не смог ее получить. работа.

Спасибо!

1 Ответ

1 голос
/ 18 марта 2020

Самый простой способ - go с пользовательской задачей 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

Все, что осталось сейчас, - это создать пользовательскую задачу, взять хост и порт из конфигурации и вызвать задачу 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.

...