什么时候仅在我的deps中的mix.exs中指定一个依赖项而不是在applications中的运行时依赖项是合适的?

我以为applications是需要启动的实际应用程序,然后才能启动我自己的应用程序,但是我遇到了一个问题,即在我包括exrm之前,Jazz并未将:jazz库(我认为仅包含纯函数)放入发行版中applications中的ojit_code。

最佳答案

OTP应用程序更像一个组件-一堆可能(但不一定)运行某些进程的模块和功能。如果OTP应用程序未启动其自己的监视树,则将其称为库应用程序。无论哪种方式,如果在运行时使用某些libs函数,则需要将其指定为运行时dep。

相反,编译时依赖性仅确保获取第三方代码并在本地(在您的开发/构建计算机上)可用。如果第三方代码在运行时之外发挥了魔力,这将很有用。一个示例可能是我自己的ExActor或纯Erlang meck模拟库。在第一种情况下,ExActor在编译过程中发挥了魔力,而在第二种情况下,仅在测试过程中需要模拟库。

关于elixir - 何时在Elixir中使用仅编译依赖项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30258088/

10-11 03:01
查看更多