mix 是 Elixir 中的套件管理工具,類似python 的 pip、nodejs 的 npm 等。
但mix提供了更多功能,藉由方便的指令,mix可以做出簡單的Elixir專案,管理套件,測試許多功能。
今天只要輸入mix new new_project
,便可以做出一個簡單的Elixir專案。
打開專案目錄下的mix.exs,這支檔案紀錄了專案的相關資訊,以及套件依賴(deps)。
mix.exs
defmodule NewProject.MixProject do
use Mix.Project
def project do
[
app: :new_project,
version: "0.1.0",
elixir: "~> 1.9",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
]
end
end
在專案目錄下,執行iex -S mix
,就可以在專案環境中運行交互模式,可以執行模組的函式。
lib
資料下慣例上放著我們elixir的程式邏輯本身,並且 mix 已經幫忙做出了專案的頂層模組,並且名稱會以創建的專案名稱轉為大寫駝峰。
defmodule NewProject do
@moduledoc """
Documentation for NewProject.
"""
@doc """
Hello world.
## Examples
iex> NewProject.hello()
:world
"""
def hello do
:world
end
end
因此我們可以在執行iex -S mix
後,進行以下操作:
iex(1)> NewProject.hello()
:world
這樣就執行了一個簡單的hello world囉~
在執行iex -S mix
的當下,會發現跟目錄下多了一個/_build
資料夾,原因是因為Elixir在執行前會先編譯成在 Erlang VM 上可執行的 Binary code,mix compile
一樣會對專案進行編譯。