Elixir-Mix

作者: 你期待的花开 | 来源:发表于2018-11-14 17:36 被阅读7次

    在更深入了解 Elixir 之前,我们必须先学习 mix。在编写大型项目的时候,为了方便管理,我们会把代码分成不同的文件,mix 就是为了管理项目而生的。

    目录

    • 新项目
    • 编译
    • 交互
    • 管理依赖
    • 多个环境

    新项目

    创建新项目,使用 mix new,这个命令能自动生成项目的目录和一些标准的模板文件。

    ➜  Desktop mix new example
    * creating README.md
    * creating .gitignore
    * creating mix.exs
    * creating config
    * creating config/config.exs
    * creating lib
    * creating lib/example.ex
    * creating test
    * creating test/test_helper.exs
    * creating test/example_test.exs
    
    Your Mix project was created successfully.
    You can use "mix" to compile it, test it, and more:
    
        cd example
        mix test
    
    Run "mix help" for more commands.
    

    这篇文章介绍 mix.exs 这个文件,因为我们用这个文件配置应用、依赖、环境信息还有版本。

    defmodule Example.Mixfile do
      use Mix.Project
    
      def project do
        [
          app: :example,
          version: "0.1.0",
          elixir: "~> 1.5",
          start_permanent: Mix.env() == :prod,
          deps: deps()
        ]
      end
    
      def application do
        [
          extra_applications: [:logger]
        ]
      end
    
      defp deps do
        []
      end
    end
    

    project部分,app变量定义了应用名称,version 定义版本号,elixir 定义了 Elixir的版本号,deps 定义依赖。下面还会讲到,application部分的内容在生产应用文件的时候会用到。

    编译

    Mix 很智能,能够在需要的时候自动编译改动的内容,不过有时候还是要手动编译项目。
    在项目的根目录运行 mix compile 就能编译项目了。
    在我们编译项目的时候,mix 会自动创建一个_build目录,查看_build目录,你会看到编译好的文件:example.app

    交互

    有时候需要用 iex 和我们的项目交互,mix 支持这个功能。编译了项目之后,我们用命令打开一个新的 iex回话。

    iex -S mix
    

    这样 iex启动的时候就会把你的应用和依赖都加在到当前环境(这样你可以在 iex中导入和运行编译好的代码)。

    管理依赖

    要增加新的依赖,首先把它添加到 mix.exs 文件的 deps部分,所有的依赖组成了一个列表,每一项是一个二元元组,第一个值是原子表示的包名称,第二个是包的版本号,版本号可以省略。

    举一个有依赖的项目phoenix_slim 作为例子:

    def deps do
      [
        {:phoenix, "~> 1.1 or ~> 1.2"},
        {:phoenix_html, "~> 2.3"},
        {:cowboy, "~> 1.0", only: [:dev, :test]},
        {:slime, "~> 0.14"}
      ]
    end
    

    在这里,cowboy这个依赖只有在开发和测试环境才需要。

    定义依赖,还需要获取依赖 mix deps.get

    多个环境

    默认情况下,mix 支持三种环境:

    • dev — 默认的环境
    • test — mix test 使用的环境,后面会讲到
    • prod — 把应用上线会用到的环境
      可以从 Mis.env 变量中获取到当前的环境,而且环境也可以通过MIX_ENV环境变量来配置:
    $ MIX_ENV=prod mix compile
    

    相关文章

      网友评论

        本文标题:Elixir-Mix

        本文链接:https://www.haomeiwen.com/subject/omsqmftx.html