查看源代码 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
摘要
函数
返回协议是否至少合并过一次。