В elixir, Как установить пакеты по всему миру?

Можно ли использовать mix для установки некоторых пакетов по всему миру? Я бы хотел, чтобы поведение, подобное npm глобальному параметру или gem install - могло бы быть полезно для пакетов, которые я использую везде, например csv или yaml.

Ответ 1

В Elixir нет такой вещи, вы всегда используете зависимости в контексте проекта. Решения, такие как архивы или сценарии, предназначены для решения конкретных проблем, они не позволяют совместное использование пакетов между проектами.

Однако нет необходимости беспокоиться о совместном использовании часто используемых пакетов. Hex, менеджер пакетов, уже кэширует их, и он позаботится о его обработке для вас.

Ответ 2

Некоторые пакеты предоставляют архивный файл, который вы можете установить глобально.

http://elixir-lang.org/docs/v1.1/mix/Mix.Tasks.Archive.Install.html

Например Феникс:

mix archive.install https://github.com/phoenixframework/phoenix/releases/download/v1.0.3/phoenix_new-1.0.3.ez

Это позволяет получить доступ к задаче mix phoenix.new всему миру. Однако нет ничего конкретного, что позволяло бы устанавливать библиотеки, доступные во всех ваших смешанных проектах.

Ответ 3

Для сценариев Elixir вы можете виртуально устанавливать глобальные пакеты, используя erun. erun со своими зависимостями, вы можете запустить

$ erun foo.exs

(erun это просто сценарий.)

https://github.com/s417-lama/erun