mix 是什么?
mix 是一个用于Elixir项目打包,编译,测试的工具,类似Leiningen 之于clojure,mix
是由lein
项目中的一位contributor写的,可以使用mix创建项目,安装依赖,会非常方便。
创建一个项目
使用mix new
命令创建一个新项目,比如创建一个项目叫my_project
$ mix new my_project --bare
mix为我们创建了项目的基本骨架。
.gitignore
README.md
mix.exs
lib/my_project.ex
test/test_helper.exs
test/my_project_test.exs
项目文件作用介绍:
mix.exs
这个文件是项目的配置文件,内容如下
defmodule MyProject.Mixfile do
use Mix.Project
def project do
[app: :my_project,
version: "0.0.1",
deps: deps]
end
# Configuration for the OTP application
def application do
[]
end
# Returns the list of dependencies in the format:
# {:foobar, git: "https://github.com/elixir-lang/foobar.git", tag: "0.1"}
#
# To specify particular versions, regardless of the tag, do:
# {:barbat, "~> 0.1", github: "elixir-lang/barbat"}
defp deps do
[]
end
end
这个文件里主要有两个函数project
和application
,其中project包含项目的版本,Elixir依赖版本等,application 主要用于生成一个Erlang应用,可以被Erlang运行时管理。
lib/my_project.ex
主模块定义
defmodule MyProject do
end
test/my_project_test.exs
测试相关,注意扩展名是exs
,表示这是Elixir的脚本文件,因为我们运行测试程序不需要编译。
defmodule MyProjectTest do
use ExUnit.Case
test "the truth" do
assert true
end
end
定义了MyProjectTest
这个模块,并使用了ExUnit.Case
,并定义了一个简单的测试用例
Exunit 是Elixir的一个单元测试框架
test/test_helper.exs
此文件就一行代码,ExUnit.start
用于对框架做一些设置,每次测试执行,这个文件都会被require
ExUnit.start
项目创建完,下一步就是写代码了!
其它
查看帮助
$ mix help
会打印所有的task,进一步查看 mix help TASK
依赖管理
Mix可以帮我们管理包依赖,下面的deps函数定义了依赖包:
def project do
[app: :my_project,
version: "0.0.1",
deps: deps]
end
defp deps do
[{:some_project, ">= 0.3.0"},
{:another_project, git: "https://example.com/another/repo.git", tag: "v1.0.2"}]
end
Mix支持Git库,如果不是Git, 使用Hex的话默认是从hex.pm下载包。
版本号支持>=, <=, >, ==
操作符对版本限制
也支持and
or
">= 2.0.0 and < 2.1.0"
等价于
"~> 2.0.0"
依赖处理 task
-
mix deps
- 列出依赖状态 -
mix deps.get
- 获取所有依赖; -
mix deps.compile
- 编译; -
mix deps.update
- 更新依赖包; -
mix deps.clean
- 删除依赖文件; -
mix deps.unlock
- 锁定依赖版本;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。