defmodule SchemaOrg.MixProject do
use Mix.Project
@version "0.2.0"
@source_url "https://github.com/mike-kostov/schema_org"
def project do
[
app: :schema_org,
version: @version,
elixir: "~> 1.19",
start_permanent: Mix.env() == :prod,
deps: deps(),
name: "SchemaOrg",
description: description(),
package: package(),
docs: docs(),
source_url: @source_url,
aliases: aliases()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
]
end
# Run the `precommit` alias (and its `test` step) in the test environment.
def cli do
[preferred_envs: [precommit: :test]]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:jason, "~> 1.4"},
# Optional: only needed by the `SchemaOrg.HTML` Phoenix component, which is
# compiled solely when `Phoenix.Component` is available. Non-Phoenix
# consumers never pull this in.
{:phoenix_live_view, "~> 1.0", optional: true},
{:ex_doc, "~> 0.34", only: :dev, runtime: false}
]
end
defp description do
"Strictly-typed builder for generating SEO Schema.org JSON-LD in Elixir and " <>
"Phoenix applications. 1000+ generated struct modules — build with struct " <>
"literals for first-class editor auto-complete and compile-time field checks."
end
defp package do
[
maintainers: ["Mike Kostov"],
licenses: ["MIT"],
links: %{"GitHub" => @source_url},
# Ship the runtime API + generated types only — not the maintainer-only
# build task under lib/mix or the source graph.
files:
~w(lib/schema_org lib/schema_org.ex .formatter.exs mix.exs README.md CHANGELOG.md LICENSE) ++
~w(guides)
]
end
defp docs do
[
main: "readme",
extras: [
"README.md",
"CHANGELOG.md",
"guides/ecommerce-product.md",
"guides/blog-home.md",
"guides/blog-article.md",
"guides/article-with-video.md",
"guides/article-with-audio.md",
"guides/landing-page.md"
],
groups_for_extras: [Guides: ~r"guides/.*"],
source_ref: "v#{@version}"
]
end
defp aliases do
[
precommit: ["format --check-formatted", "compile --warnings-as-errors", "test"]
]
end
end