【发布时间】:2019-07-18 21:52:16
【问题描述】:
我有这个 url @registry "http://registry.npmjs.org/" 当你附加包名称和 /latest 时,它会返回一些关于包的详细信息,我需要获取我所做的所有依赖项并且它工作正常,但我需要更高级下来,有了它。比如。
如果您检查 http://registry.npmjs.org/handlebars/latest 并且它有 4 个依赖项,我想要这些 deps 以及进一步使用 neo-async 以及其他 deps 和 deps 这些 deps 得到什么是他们的依赖。这个我试过了。
defmodule Deep do
@registry "http://registry.npmjs.org/"
alias HTTPoison.Response, as: Resp
def go(package, complete_deps \\ []) do
HTTPoison.get(@registry <> package <> "/latest")
|> handle_response()
|> get_deps()
end
defp get_deps(nil), do: []
defp get_deps(deps), do: Enum.map(deps, fn({k, _v}) -> k end)
defp handle_response({:ok, %Resp{status_code: 200, body: body}}), do:
Poison.decode!(body)["dependencies"]
defp handle_response(_), do: nil
end
但我最终还是在第一级,我试过了
get_deps 结果做 head 和 tail,与 deps 一起走得更远,但我不知道在哪里可以保存 tail 或所有 deps。
基本上,我想使用递归在一个列表中获取车把、deps 及其所有 deps 的 deps,我可以看到 Enum.map 的解决方案,但它会有点难看。任何帮助将不胜感激
【问题讨论】:
标签: elixir