Packages

Enforce architecture rules in Elixir projects — without touching production code. Define layer boundaries in arch.exs, run mix arch.check, and get CI-friendly violations.

Current section

Files

Jump to
Raw

mix.exs

defmodule ExArchUnit.MixProject do
use Mix.Project
def project do
[
app: :ex_arch_unit,
version: "0.1.0",
elixir: "~> 1.16",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
deps: deps(),
test_coverage: [
ignore_modules: [
ExArchUnit.Benchmark.SyntheticUmbrella,
Mix.Tasks.Arch.Bench,
Mix.Tasks.Arch.Check,
ExArchFixture.Bad.Domain.Service,
ExArchFixture.Bad.Web.Endpoint,
ExArchFixture.Behaviour.Contract,
ExArchFixture.Behaviour.Impl,
ExArchFixture.Cycle.A,
ExArchFixture.Cycle.B,
ExArchFixture.Ok.Domain.Service,
ExArchFixture.Ok.Web.Controller,
ExArchFixture.Smoke.A,
ExArchFixture.Smoke.B
]
],
description:
"Enforce architecture rules in Elixir projects — without touching production code. " <>
"Define layer boundaries in arch.exs, run mix arch.check, and get CI-friendly violations.",
package: package(),
homepage_url: "https://github.com/florianbuetow/ExArchUnit",
source_url: "https://github.com/florianbuetow/ExArchUnit",
docs: [
source_ref: "v0.1.0",
source_url: "https://github.com/florianbuetow/ExArchUnit",
main: "readme",
extras: ["README.md", "CHANGELOG.md", "LICENSE"],
skip_undefined_reference_warnings_on: ["CHANGELOG.md"]
]
]
end
def application do
[
extra_applications: [:logger, :tools]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
{:ex_doc, "~> 0.34", only: :dev, runtime: false}
]
end
defp package do
[
licenses: ["MIT"],
links: %{
"GitHub" => "https://github.com/florianbuetow/ExArchUnit"
},
files: ~w(
lib/ex_arch_unit.ex
lib/ex_arch_unit
lib/mix/tasks/arch.check.ex
mix.exs
README.md
LICENSE
CHANGELOG.md
),
exclude_patterns: [~r/benchmark/]
]
end
end