簡體   English   中英

具有依賴關系的 Elixir 腳本

[英]Elixir script with dependency

我正在編寫一個快速的 Elixir 腳本,我想使用csv 庫依賴項。 創建一個新的混合項目只是為這個庫添加依賴項管理似乎有點矯枉過正。 你會推薦什么? 您會為具有依賴關系的簡單腳本采用混合項目路線嗎?

編輯

注意:我不是在問如何全局安裝和訪問依賴項。 問題是,“你會選擇混合項目路線嗎……” 建議的方法是什么?

走混合項目路線。 快速而骯臟的腳本有辦法發展成更大的項目。

作為 Elixir 1.12 中的一項實驗性功能引入, Mix.install/2現在允許您直接在 Elixir 腳本中指定依賴項,為您提供一個完整混合項目的替代方案。

用法非常簡單:在腳本頂部列出您的依賴項(與混合項目中常規deps函數返回的格式相同),它將為您負責下載、編譯和緩存依賴項:

Mix.install([
  {:httpoison, "~> 1.8"},
  :jason
])
HTTPoison.start
IO.puts(Jason.encode!(%{hello: :world}))
...

可以通過使用Code.require_file/2來做到這一點

例如考慮這個:

# foo.ex
defmodule Foo do
  def bar, do: "Barrrr"
end

然后,在同一目錄中,放置您的腳本:

# main.exs
Code.require_file("foo.ex", __DIR__)

Foo.bar()
|> IO.puts()

您可以對其進行調整以包含您手動放入目錄中的其他一些第 3 方文件,但這不是很地道 你不太可能看到像上面這樣的東西(事實上,我只是編造的)。 如前所述,您通常最好堅持使用混合項目(也許制作自定義混合任務)。

請記住,Elixir 首先是一個虛擬機(Erlang VM),所以它總是帶着那個“包袱”。 對於可移植性是重中之重的快速一次性腳本,Elixir 可能不是最佳選擇。 我可能會使用 Python 來獲取簡單的腳本(因為它沒有攜帶自己的包袱,而是假設您的計算機擁有所有這些東西)或 Go(因為它會將任何復雜性編譯成單個可執行文件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM