【问题标题】:Preventing a mix task being included when your project is included as a mix dep当您的项目作为混合部门包含时,防止包含混合任务
【发布时间】:2015-11-17 01:59:59
【问题描述】:
我正在编写的 Elixir 库有两个自定义混合任务,一个旨在供将我的库作为其项目依赖项的用户使用,另一个旨在仅在我的项目中使用。
这里的问题是,在用户将我的项目添加为 dep 之后,这两个混合任务都可供用户在他们的项目中使用。
如何防止这种情况发生?我试图在我的 Mix 配置中避免 package: [ files: [ etc ] ] 中的任务,但它在我的测试项目中仍然可用,通过 git 将我的库指定为 dep。
【问题讨论】:
标签:
elixir
elixir-mix
hex-pm
【解决方案1】:
目前 Mix 并不真正直接支持私有任务的想法。几个选项是:
在mix.exs 中定义它(例如,作为别名)或在tasks/my_task.exs 和Code.require_file "tasks/my_task.exs" 中在mix.exs 之上创建它。第二个选项不是很好,因为您将在您使用的每个混合命令上执行定义任务的代码
只需使用脚本即可。如果您愿意,可以创建一个 scripts 目录,然后,当您想运行它时,只需执行以下操作:mix run scripts/do_x.ex arg1 arg2 arg3