Elixir 脚本或 iex 是否可以在不创建新项目的情况下使用外部模块?
Can Elixir script or iex use external modules without creating a new project?
我经常在 Elixir 中使用 HTTPoison 编写 HTTP 程序。
当然,如果我使用 mix 创建新项目并修改 mix.exs 对 HTTPoison 的依赖, mix deps.get
可以解决依赖关系。
但是,有时我想尝试使用短脚本 (.exs) 或 iex 进行简单实验,这些实验需要外部模块而无需创建新项目。
有没有像 Elixir 中的 'libraries search path' 那样解决这个需求的方法?
Code
模块具有实现您需要的所有功能的功能。但是,它只适用于机器上的现有文件,您几乎需要做所有事情 "manually"。
Code.append_path
Code.ensure_loaded
应该可以完成您想要的大部分内容。
另一种方法是在现有项目中使用 iex -S mix
依赖项,然后加载 .exs 文件。
erun
可能会有帮助。
它将 Mix 依赖项包装在 escript 中,您可以 运行 您的脚本作为
$ erun foo.exs
我经常在 Elixir 中使用 HTTPoison 编写 HTTP 程序。
当然,如果我使用 mix 创建新项目并修改 mix.exs 对 HTTPoison 的依赖, mix deps.get
可以解决依赖关系。
但是,有时我想尝试使用短脚本 (.exs) 或 iex 进行简单实验,这些实验需要外部模块而无需创建新项目。
有没有像 Elixir 中的 'libraries search path' 那样解决这个需求的方法?
Code
模块具有实现您需要的所有功能的功能。但是,它只适用于机器上的现有文件,您几乎需要做所有事情 "manually"。
Code.append_path
Code.ensure_loaded
应该可以完成您想要的大部分内容。
另一种方法是在现有项目中使用 iex -S mix
依赖项,然后加载 .exs 文件。
erun
可能会有帮助。
它将 Mix 依赖项包装在 escript 中,您可以 运行 您的脚本作为
$ erun foo.exs