Packages
fermo
0.16.7
0.20.1
0.20.0
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.1
0.17.0
0.16.7
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.0
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.9
0.13.8
0.13.7
0.13.6
0.13.5
0.13.4
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.4
0.2.2
0.2.1
0.2.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A static site generator
Current section
Files
Jump to
Current section
Files
lib/webpack/dev_server.ex
defmodule Webpack.DevServer do
use GenServer
@moduledoc """
Runs the Webpack Development server for live mode.
"""
@webpack_dev_server_command_default "yarn run webpack serve --watch-options-stdin"
@webpack_dev_server_command Application.get_env(
:fermo,
:webpack_dev_server_command,
@webpack_dev_server_command_default
)
def start_link(_opts) do
if File.exists?(Webpack.Assets.webpack_config_path()) do
{:ok, _pid} = GenServer.start_link(__MODULE__, %{}, name: :webpack_dev_server)
else
{:error, :webpack_config_not_found}
end
end
def init(_args) do
IO.puts "Starting Webpack dev server..."
port = Port.open(
{:spawn, @webpack_dev_server_command},
[:binary, :exit_status, {:env, [{'NODE_ENV', 'development'}]}]
)
{:ok, port}
end
def handle_info({_port, {:data, message}}, state) do
if String.match?(message, ~r/manifest.json\s.*?\[emitted\]/) do
IO.puts "manifest emitted!"
{:ok} = Webpack.Assets.load_manifest()
end
{:noreply, state}
end
def handle_info(other, state) do
IO.puts "Webpack.DevServer message: #{inspect(other, [pretty: true, width: 0])}"
{:noreply, state}
end
end