什么时候仅在我的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/