README.md

# PhoenixViewAssets

Helps to manage view specific assets in phoenix project. Uses automatic code splitting to avoid over-fetching or downloading assets twice, if they are used in multiple views. Also supports phoenix live reload.

## Installation

Add `phoenix_view_assets` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:phoenix_view_assets, "~> 0.1"}
  ]
end
```

Use (or merge) `example_assets` for `assets/` in your project.

## Setup

1. Create module `MyAppWeb.Assets`:
```elixir
defmodule MyAppWeb.Assets do
  use PhoenixViewAssets
end
```

2. Use `MyAppWeb.Assets` in your layout view to generate `scripts` and `styles` functions in compile time.
```elixir
defmodule MyApp.LayoutView do
  use MyAppWeb, :view
  use MyAppWeb.Assets
end
```

3. Use `styles` and `scripts` functions from `MyApp.Assets` to add assets to your layout:
```html
<head>
  ...
  <%= for path <- styles(@conn) do %>
    <link rel="stylesheet" href="#{path}" />
  <% end %>
</head>
<body>
  ...
  <%= for path <- scripts(@conn) do %>
    <script type="text/javascript" src="#{path}" />
  <% end %>
</body>
```