查看源代码 mix compile.protocols (Mix v1.16.2)

合并所有路径中的所有协议。

除非项目在其配置中禁用 :consolidate_protocols 选项,否则此任务会自动调用。

合并

协议合并在生产环境中非常有用,因为在生产环境中不会发生动态代码加载,通过不考虑代码加载来有效优化协议调度。

此任务会合并代码路径中的所有协议,并将新的二进制文件输出到给定的目录。对于常规应用程序,默认为“_build/MIX_ENV/lib/YOUR_APP/consolidated”,对于伞形项目,默认为“_build/MIX_ENV/consolidated”。

如果您要手动编译协议或构建发布版本,则需要考虑生成的协议。可以使用以下方法完成:

$ elixir -pa _build/MIX_ENV/lib/YOUR_APP/consolidated -S mix run

或在伞形项目中

$ elixir -pa _build/MIX_ENV/consolidated -S mix run

您可以通过检查协议的属性来验证协议是否已合并

iex> Protocol.consolidated?(Enumerable)
true

摘要

函数

返回协议是否至少合并过一次。

函数

返回协议是否至少合并过一次。