#TIL #elixirlang mix.lock에 있지만 사용하지 않는 의존성 검사
mix.exs
파일을 수정해 의존성을 추가해서 라이브러리를 사용하다가 mix.exs
파일에서만 의존성을 제거한다. mix.lock
파일에서도 지워야하는데, 그대로 놔뒀다. 이제 mix.lock
에 있어서 다운로드하지만 사용하지 않는 쓰레기 의존성이 생겼다.
사용하지도 않는데, 구태여 받을 필요가 없다. 그런 의존성이 있는지는 deps.unlock
mix 태스크(task)에 옵션을 주면 검사할 수 있다.
mix deps.unlock --check-unused
mix.lock
파일에 사용하지 않는 의존성이 있는지 검사한다. exit code로 사용하지 않는 의존성이 지금 있는지 확인할 수 있다. 나는 script/test 스크립트에 추가했다.
테스트 방법
$ git diff
diff --git a/apps/builder/mix.exs b/apps/builder/mix.exs
index 37eee14..c1b05a7 100644
--- a/apps/builder/mix.exs
+++ b/apps/builder/mix.exs
@@ -28,6 +28,7 @@ defmodule Builder.MixProject do
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"},
# {:sibling_app_in_umbrella, in_umbrella: true}
+ {:decimal, "~> 2.1"}
]
end
end
diff --git a/mix.lock b/mix.lock
index 5b94297..de4125c 100644
--- a/mix.lock
+++ b/mix.lock
@@ -1,5 +1,6 @@
%{
"certifi": {:hex, :certifi, "2.9.0", "6f2a475689dd47f19fb74334859d460a2dc4e3252a3324bd2111b8f0429e7e21", [:rebar3], [], "hexpm", "266da46bdb06d6c6d35fde799bcb28d36d985d424ad7c08b5bb48f5b5cdd4641"},
+ "decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
"dialyxir": {:hex, :dialyxir, "1.3.0", "fd1672f0922b7648ff9ce7b1b26fcf0ef56dda964a459892ad15f6b4410b5284", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo:
decimal 패키지를 추가했다. mix.exs
파일과 mix.lock
파일에 관련 정보가 추가됐다.
이 상태에서 mix.exs
파일에 설정된 {:decimal, "~> 2.1"}
코드를 삭제한다. mix.lock
파일은 수정하지 않는다. 즉 mix.exs
파일에는 없어서 사용되지 않는데, mix.lock
파일에는 설정되어 있어서 다운로드 받는 종속성을 만든 상태다.
$ mix deps.unlock --check-unused
** (Mix) Unused dependencies in mix.lock file:
* :decimal
$ echo $?
1
잘 검출된다.