Packages
mbta_metro
1.0.0
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
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
0.0.65
0.0.64
0.0.62
0.0.61
0.0.60
0.0.58
0.0.57
0.0.56
0.0.55
0.0.54
0.0.53
0.0.52
0.0.51
0.0.50
0.0.49
0.0.48
0.0.47
0.0.46
0.0.45
0.0.44
0.0.43
0.0.42
0.0.41
0.0.40
0.0.39
0.0.34
0.0.30
0.0.27
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
0.0.1-alpha
A Phoenix LiveView component library
Current section
Files
Jump to
Current section
Files
mbta_metro
mix.exs
mix.exs
defmodule MbtaMetro.MixProject do
use Mix.Project
def project do
[
app: :mbta_metro,
aliases: aliases(),
compilers: Mix.compilers(),
deps: deps(),
description: "A Phoenix LiveView component library",
docs: docs(),
elixir: "~> 1.17",
elixirc_paths: elixirc_paths(Mix.env()),
name: "MbtaMetro",
package: package(),
start_permanent: Mix.env() == :prod,
version: version()
]
end
# Configuration for the OTP application.
#
# Type `mix help compile.app` for more information.
def application do
if is_metro_app?() and Mix.env() != :test do
[mod: {MbtaMetro.Application, []}]
else
[]
end
end
defp aliases() do
[
prepare: ["tokens.build", "assets.build", "mbta_metro.version"],
"assets.build": [
"esbuild tokens",
"esbuild metro",
"tailwind metro"
],
"tokens.build": [
"cmd --cd assets npx style-dictionary build --config process-figma-tokens.js"
]
]
end
# If loaded as a dependency, just need the bare minimum to run components
defp deps do
if is_metro_app?() do
[
{:bandit, "~> 1.7", only: :dev, optional: true, runtime: false},
{:cva, "~> 0.2"},
{:esbuild, "~> 0.10", runtime: false},
{:ex_doc, "~> 0.38", only: :dev, runtime: false},
{:faker, "~> 0.18", only: :dev, runtime: false},
{:floki, "~> 0.38"},
{:gettext, ">= 0.0.0"},
{:jason, "~> 1.4"},
{:heroicons, "~> 0.5", optional: true},
{:phoenix, "~> 1.7"},
{:phoenix_live_reload, "~> 1.6", only: :dev, optional: true, runtime: false},
{:phoenix_live_view, "~> 1.1"},
{:phoenix_storybook, "~> 0.9", only: :dev, optional: true, runtime: Mix.env() == :dev},
{:tailwind, "~> 0.3", runtime: false},
{:timex, "~> 3.7"}
]
else
[
{:cva, "~> 0.2"},
{:floki, "~> 0.38"},
{:gettext, ">= 0.0.0"},
{:jason, "~> 1.4"},
{:timex, "~> 3.7"}
]
end
end
defp docs do
[
main: "MbtaMetro",
canonical: "http://hexdocs.pm/mbta_metro",
extras: ["README.md"],
logo: "priv/static/icons/brands/metro.svg",
source_url: "https://github.com/mbta/mbta_metro",
source_ref: "v#{version()}"
]
end
# Specifies which paths to compile per environment.
# In test, we only want to compile the function and live components (and utils).
defp elixirc_paths(:test) do
[
"lib/mbta_metro/components",
"lib/mbta_metro/live",
"lib/mbta_metro/utils.ex"
]
end
# We don't want to compile the mbta_metro_web directory when mbta_metro is being run in another app.
defp elixirc_paths(_) do
if is_metro_app?() do
["lib", "storybook"]
else
[
"lib/mbta_metro.ex",
"lib/mbta_metro/components",
"lib/mbta_metro/live",
"lib/mbta_metro/gettext.ex",
"lib/mbta_metro/utils.ex"
]
end
end
defp package do
[
files: ~w(lib mix.exs priv/dist priv/static/fonts priv/static/icons README* VERSION),
licenses: ["GPL-3.0-or-later"],
links: %{"GitHub" => "https://github.com/mbta/mbta_metro"}
]
end
defp version do
File.read!("VERSION")
|> String.trim()
end
# Load different things if this application's a dependency of another project
defp is_metro_app? do
app = Mix.Project.config()[:app]
is_nil(app) or app == :mbta_metro
end
end