Sophie

Sophie

distrib > Mageia > 7 > i586 > media > core-release > by-pkgid > 016232f1d9a3f7bee85855d35a2bca58 > files > 257

elixir-doc-1.7.2-1.mga7.noarch.rpm

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="generator" content="ExDoc v0.19.1">
    <title>Mix – Mix v1.7.2</title>
    <link rel="stylesheet" href="dist/app-240d7fc7e5.css" />
      <link rel="canonical" href="https://hexdocs.pm/mix/v1.7/Mix.html" />
    <script src="dist/sidebar_items-0c0044e6e4.js"></script>
    
  </head>
  <body data-type="modules">
    <script>try { if(localStorage.getItem('night-mode')) document.body.className += ' night-mode'; } catch (e) { }</script>
    <div class="main">
<button class="sidebar-button sidebar-toggle">
  <span class="icon-menu" aria-hidden="true"></span>
  <span class="sr-only">Toggle Sidebar</span>
</button>
<button class="sidebar-button night-mode-toggle">
  <span class="icon-theme" aria-hidden="true"></span>
  <span class="sr-only">Toggle Theme</span>
</button>
<section class="sidebar">

  <a href="http://elixir-lang.org/docs.html" class="sidebar-projectLink">
    <div class="sidebar-projectDetails">
      <h1 class="sidebar-projectName">
Mix      </h1>
      <h2 class="sidebar-projectVersion">
        v1.7.2
      </h2>
    </div>
      <img src="assets/logo.png" alt="Mix" class="sidebar-projectImage">
  </a>

  <form class="sidebar-search" action="search.html">
    <button type="submit" class="search-button">
      <span class="icon-search" aria-hidden="true"></span>
    </button>
    <input name="q" type="text" id="search-list" class="search-input" placeholder="Search" aria-label="Search" autocomplete="off" />
  </form>

  <ul class="sidebar-listNav">
    <li><a id="extras-list" href="#full-list">Pages</a></li>

      <li><a id="modules-list" href="#full-list">Modules</a></li>

      <li><a id="exceptions-list" href="#full-list">Exceptions</a></li>

      <li><a id="tasks-list" href="#full-list">Mix Tasks</a></li>
  </ul>
  <div class="gradient"></div>
  <ul id="full-list" class="sidebar-fullList"></ul>
</section>

<section class="content">
  <div class="content-outer">
    <div id="content" class="content-inner">


      <h1>
        <small class="visible-xs">Mix v1.7.2</small>
Mix        
          <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/mix/lib/mix.ex#L1" title="View Source" class="view-source" rel="help">
            <span class="icon-code" aria-hidden="true"></span>
            <span class="sr-only">View Source</span>
          </a>
      </h1>


        <section id="moduledoc">
<p>Mix is a build tool that provides tasks for creating, compiling,
and testing Elixir projects, managing its dependencies, and more.</p>
<h2 id="module-mix-project" class="section-heading">
  <a href="#module-mix-project" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Mix.Project
</h2>

<p>The foundation of Mix is a project. A project can be defined by using
<a href="Mix.Project.html"><code class="inline">Mix.Project</code></a> in a module, usually placed in a file named <code class="inline">mix.exs</code>:</p>
<pre><code class="nohighlight makeup elixir"><span class="kd">defmodule</span><span class="w"> </span><span class="nc">MyApp.MixProject</span><span class="w"> </span><span class="k" data-group-id="2915493541-1">do</span><span class="w">
  </span><span class="kn">use</span><span class="w"> </span><span class="nc">Mix.Project</span><span class="w">

  </span><span class="kd">def</span><span class="w"> </span><span class="nf">project</span><span class="w"> </span><span class="k" data-group-id="2915493541-2">do</span><span class="w">
    </span><span class="p" data-group-id="2915493541-3">[</span><span class="w">
      </span><span class="ss">app</span><span class="p">:</span><span class="w"> </span><span class="ss">:my_app</span><span class="p">,</span><span class="w">
      </span><span class="ss">version</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;1.0.0&quot;</span><span class="w">
    </span><span class="p" data-group-id="2915493541-3">]</span><span class="w">
  </span><span class="k" data-group-id="2915493541-2">end</span><span class="w">
</span><span class="k" data-group-id="2915493541-1">end</span></code></pre>
<p>See the <a href="Mix.Project.html"><code class="inline">Mix.Project</code></a> module for detailed documentation on Mix projects.</p>
<p>Once the project is defined, a number of default Mix tasks can be run
directly from the command line:</p>
<ul>
<li><code class="inline">mix compile</code> - compiles the current project
</li>
<li><code class="inline">mix test</code> - runs tests for the given project
</li>
<li><code class="inline">mix run</code> - runs a particular command inside the project
</li>
</ul>
<p>Each task has its own options and sometimes specific configuration
to be defined in the <code class="inline">project/0</code> function. You can use <code class="inline">mix help</code>
to list all available tasks and <code class="inline">mix help NAME</code> to show help for
a particular task.</p>
<p>The best way to get started with your first project is by calling
<code class="inline">mix new my_project</code> from the command line.</p>
<h2 id="module-mix-task" class="section-heading">
  <a href="#module-mix-task" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Mix.Task
</h2>

<p>Tasks are what make Mix extensible.</p>
<p>Projects can extend Mix behaviour by adding their own tasks. For
example, adding the task below inside your project will
make it available to everyone that uses your project:</p>
<pre><code class="nohighlight makeup elixir"><span class="kd">defmodule</span><span class="w"> </span><span class="nc">Mix.Tasks.Hello</span><span class="w"> </span><span class="k" data-group-id="0930845410-1">do</span><span class="w">
  </span><span class="kn">use</span><span class="w"> </span><span class="nc">Mix.Task</span><span class="w">

  </span><span class="kd">def</span><span class="w"> </span><span class="nf">run</span><span class="p" data-group-id="0930845410-2">(</span><span class="bp">_</span><span class="p" data-group-id="0930845410-2">)</span><span class="w"> </span><span class="k" data-group-id="0930845410-3">do</span><span class="w">
    </span><span class="nc">Mix</span><span class="o">.</span><span class="n">shell</span><span class="o">.</span><span class="n">info</span><span class="w"> </span><span class="s">&quot;hello&quot;</span><span class="w">
  </span><span class="k" data-group-id="0930845410-3">end</span><span class="w">
</span><span class="k" data-group-id="0930845410-1">end</span></code></pre>
<p>The task can now be invoked with <code class="inline">mix hello</code>.</p>
<h2 id="module-dependencies" class="section-heading">
  <a href="#module-dependencies" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Dependencies
</h2>

<p>Mix also manages your dependencies and integrates nicely with the <a href="https://hex.pm">Hex package
manager</a>.</p>
<p>In order to use dependencies, you need to add a <code class="inline">:deps</code> key
to your project configuration. We often extract the list of dependencies
into its own function:</p>
<pre><code class="nohighlight makeup elixir"><span class="kd">defmodule</span><span class="w"> </span><span class="nc">MyApp.MixProject</span><span class="w"> </span><span class="k" data-group-id="4305520218-1">do</span><span class="w">
  </span><span class="kn">use</span><span class="w"> </span><span class="nc">Mix.Project</span><span class="w">

  </span><span class="kd">def</span><span class="w"> </span><span class="nf">project</span><span class="w"> </span><span class="k" data-group-id="4305520218-2">do</span><span class="w">
    </span><span class="p" data-group-id="4305520218-3">[</span><span class="w">
      </span><span class="ss">app</span><span class="p">:</span><span class="w"> </span><span class="ss">:my_app</span><span class="p">,</span><span class="w">
      </span><span class="ss">version</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;1.0.0&quot;</span><span class="p">,</span><span class="w">
      </span><span class="ss">deps</span><span class="p">:</span><span class="w"> </span><span class="n">deps</span><span class="p" data-group-id="4305520218-4">(</span><span class="p" data-group-id="4305520218-4">)</span><span class="w">
    </span><span class="p" data-group-id="4305520218-3">]</span><span class="w">
  </span><span class="k" data-group-id="4305520218-2">end</span><span class="w">

  </span><span class="kd">defp</span><span class="w"> </span><span class="nf">deps</span><span class="w"> </span><span class="k" data-group-id="4305520218-5">do</span><span class="w">
    </span><span class="p" data-group-id="4305520218-6">[</span><span class="w">
      </span><span class="p" data-group-id="4305520218-7">{</span><span class="ss">:ecto</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;~&gt; 2.0&quot;</span><span class="p" data-group-id="4305520218-7">}</span><span class="p">,</span><span class="w">
      </span><span class="p" data-group-id="4305520218-8">{</span><span class="ss">:plug</span><span class="p">,</span><span class="w"> </span><span class="ss">github</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;elixir-lang/plug&quot;</span><span class="p" data-group-id="4305520218-8">}</span><span class="w">
    </span><span class="p" data-group-id="4305520218-6">]</span><span class="w">
  </span><span class="k" data-group-id="4305520218-5">end</span><span class="w">
</span><span class="k" data-group-id="4305520218-1">end</span></code></pre>
<p>You can run <code class="inline">mix help deps</code> to learn more about dependencies in Mix.</p>
<h2 id="module-environments" class="section-heading">
  <a href="#module-environments" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Environments
</h2>

<p>Mix supports different environments. Environments allow developers to prepare
and organize their project specifically for different scenarios. By default,
Mix provides three environments:</p>
<ul>
<li><code class="inline">:dev</code> - the default environment
</li>
<li><code class="inline">:test</code> - the environment <code class="inline">mix test</code> runs on
</li>
<li><code class="inline">:prod</code> - the environment your dependencies run on
</li>
</ul>
<p>The environment can be changed via the command line by setting
the <code class="inline">MIX_ENV</code> environment variable, for example:</p>
<pre><code class="nohighlight makeup elixir"><span class="err">$</span><span class="w"> </span><span class="nc">MIX_ENV</span><span class="o">=</span><span class="n">prod</span><span class="w"> </span><span class="n">mix</span><span class="w"> </span><span class="n">run</span><span class="w"> </span><span class="n">server</span><span class="o">.</span><span class="n">exs</span></code></pre>
<h2 id="module-aliases" class="section-heading">
  <a href="#module-aliases" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Aliases
</h2>

<p>Aliases are shortcuts or tasks specific to the current project.</p>
<p>In the <a href="Mix.Task.html"><code class="inline">Mix.Task</code></a> section, we have defined a task that would be
available to everyone using our project as a dependency. What if
we wanted the task to only be available for our project? Just
define an alias:</p>
<pre><code class="nohighlight makeup elixir"><span class="kd">defmodule</span><span class="w"> </span><span class="nc">MyApp.MixProject</span><span class="w"> </span><span class="k" data-group-id="3819683189-1">do</span><span class="w">
  </span><span class="kn">use</span><span class="w"> </span><span class="nc">Mix.Project</span><span class="w">

  </span><span class="kd">def</span><span class="w"> </span><span class="nf">project</span><span class="w"> </span><span class="k" data-group-id="3819683189-2">do</span><span class="w">
    </span><span class="p" data-group-id="3819683189-3">[</span><span class="w">
      </span><span class="ss">app</span><span class="p">:</span><span class="w"> </span><span class="ss">:my_app</span><span class="p">,</span><span class="w">
      </span><span class="ss">version</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;1.0.0&quot;</span><span class="p">,</span><span class="w">
      </span><span class="ss">aliases</span><span class="p">:</span><span class="w"> </span><span class="n">aliases</span><span class="p" data-group-id="3819683189-4">(</span><span class="p" data-group-id="3819683189-4">)</span><span class="w">
    </span><span class="p" data-group-id="3819683189-3">]</span><span class="w">
  </span><span class="k" data-group-id="3819683189-2">end</span><span class="w">

  </span><span class="kd">defp</span><span class="w"> </span><span class="nf">aliases</span><span class="w"> </span><span class="k" data-group-id="3819683189-5">do</span><span class="w">
    </span><span class="p" data-group-id="3819683189-6">[</span><span class="w">
      </span><span class="ss">c</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;compile&quot;</span><span class="p">,</span><span class="w">
      </span><span class="ss">hello</span><span class="p">:</span><span class="w"> </span><span class="o">&amp;</span><span class="n">hello</span><span class="o">/</span><span class="mi">1</span><span class="w">
    </span><span class="p" data-group-id="3819683189-6">]</span><span class="w">
  </span><span class="k" data-group-id="3819683189-5">end</span><span class="w">

  </span><span class="kd">defp</span><span class="w"> </span><span class="nf">hello</span><span class="p" data-group-id="3819683189-7">(</span><span class="bp">_</span><span class="p" data-group-id="3819683189-7">)</span><span class="w"> </span><span class="k" data-group-id="3819683189-8">do</span><span class="w">
    </span><span class="nc">Mix</span><span class="o">.</span><span class="n">shell</span><span class="o">.</span><span class="n">info</span><span class="w"> </span><span class="s">&quot;Hello world&quot;</span><span class="w">
  </span><span class="k" data-group-id="3819683189-8">end</span><span class="w">
</span><span class="k" data-group-id="3819683189-1">end</span></code></pre>
<p>In the example above, we have defined two aliases. One is <code class="inline">mix c</code>
which is a shortcut for <code class="inline">mix compile</code>. The other is named
<code class="inline">mix hello</code>, which is the equivalent to the <code class="inline">Mix.Tasks.Hello</code>
we have defined in the <a href="Mix.Task.html"><code class="inline">Mix.Task</code></a> section.</p>
<p>Aliases may also be lists, specifying multiple tasks to be run
consecutively:</p>
<pre><code class="nohighlight makeup elixir"><span class="p" data-group-id="9736065935-1">[</span><span class="ss">all</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="9736065935-2">[</span><span class="o">&amp;</span><span class="n">hello</span><span class="o">/</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;deps.get --only </span><span class="si" data-group-id="9736065935-3">#{</span><span class="nc">Mix</span><span class="o">.</span><span class="n">env</span><span class="si" data-group-id="9736065935-3">}</span><span class="s">&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;compile&quot;</span><span class="p" data-group-id="9736065935-2">]</span><span class="p" data-group-id="9736065935-1">]</span></code></pre>
<p>In the example above, we have defined an alias named <code class="inline">mix all</code>,
that prints hello, then fetches dependencies specific to the
current environment and compiles the project.</p>
<p>Arguments given to the alias will be appended to the arguments
of the last task in the list, if the last task is a function
they will be given as a list of strings to the function.</p>
<p>Finally, aliases can also be used to augment existing tasks.
Let’s suppose you want to augment <code class="inline">mix clean</code> to clean another
directory Mix does not know about:</p>
<pre><code class="nohighlight makeup elixir"><span class="p" data-group-id="2984818968-1">[</span><span class="ss">clean</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="2984818968-2">[</span><span class="s">&quot;clean&quot;</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">clean_extra</span><span class="o">/</span><span class="mi">1</span><span class="p" data-group-id="2984818968-2">]</span><span class="p" data-group-id="2984818968-1">]</span></code></pre>
<p>Where <code class="inline">&amp;clean_extra/1</code> would be a function in your <code class="inline">mix.exs</code>
with extra cleanup logic.</p>
<p>Aliases defined in the current project do not affect its dependencies and
aliases defined in dependencies are not accessible from the current project.</p>
<p>Aliases can be used very powerfully to also run Elixir scripts and
bash commands, for example:</p>
<pre><code class="nohighlight makeup elixir"><span class="c1"># priv/hello.exs</span><span class="w">
</span><span class="nc">IO</span><span class="o">.</span><span class="n">puts</span><span class="p" data-group-id="1228125883-1">(</span><span class="s">&quot;hello&quot;</span><span class="p" data-group-id="1228125883-1">)</span><span class="w">

</span><span class="c1"># priv/world.sh</span><span class="w">
</span><span class="c1">#!/bin/sh</span><span class="w">
</span><span class="n">echo</span><span class="w"> </span><span class="s">&quot;world!&quot;</span><span class="w">

</span><span class="c1"># mix.exs</span><span class="w">
</span><span class="kd">defp</span><span class="w"> </span><span class="nf">create_aliases</span><span class="w"> </span><span class="k" data-group-id="1228125883-2">do</span><span class="w">
  </span><span class="p" data-group-id="1228125883-3">[</span><span class="w">
    </span><span class="ss">&quot;taskalias&quot;</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="1228125883-4">[</span><span class="s">&quot;hex.info&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;run priv/hello.exs&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;cmd priv/world.sh&quot;</span><span class="p" data-group-id="1228125883-4">]</span><span class="p">,</span><span class="w">
    </span><span class="ss">&quot;taskalias2&quot;</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="1228125883-5">[</span><span class="s">&quot;run priv/hello1.exs&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;run priv/hello2.exs&quot;</span><span class="p" data-group-id="1228125883-5">]</span><span class="w">
  </span><span class="p" data-group-id="1228125883-3">]</span><span class="w">
</span><span class="k" data-group-id="1228125883-2">end</span></code></pre>
<p>In the example above we have created 2 aliases, the first example
<code class="inline">taskalias</code> will run task <code class="inline">hex.info</code>, then (<code class="inline">run</code>)[<code class="inline">Mix.Tasks.Run</code>]
to run an Elixir script, then (<code class="inline">cmd</code>)[<code class="inline">Mix.Tasks.Cmd</code>] to run a
command line bash script. This shows how powerful aliases mixed
with mix tasks can be.</p>
<p><code class="inline">taskalias2</code> shows a limitation of tasks where only one of the given
tasks will run, the execution of <code class="inline">run priv/hello2.exs</code> will not run.
The <code class="inline">run</code> command, however, can accept multiple files, so in case
of running multiple files, it can be rewritten to:</p>
<pre><code class="nohighlight makeup elixir"><span class="ss">&quot;taskalias2&quot;</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="9726281121-1">[</span><span class="s">&quot;run -r priv/hello1.exs -r priv/hello2.exs&quot;</span><span class="p" data-group-id="9726281121-1">]</span></code></pre>
<h2 id="module-environment-variables" class="section-heading">
  <a href="#module-environment-variables" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Environment variables
</h2>

<p>Several environment variables can be used to modify Mix’s behaviour.</p>
<p>Mix responds to the following variables:</p>
<ul>
<li><code class="inline">MIX_ARCHIVES</code> - specifies the directory into which the archives should be installed
</li>
<li><code class="inline">MIX_BUILD_PATH</code> - sets the project build_path config
</li>
<li><code class="inline">MIX_DEBUG</code> - outputs debug information about each task before running it
</li>
<li><code class="inline">MIX_ENV</code> - specifies which environment should be used. See <a href="#module-environments">Environments</a>
</li>
<li><code class="inline">MIX_EXS</code> - changes the full path to the <code class="inline">mix.exs</code> file
</li>
<li><code class="inline">MIX_HOME</code> - path to Mix’s home directory, stores configuration files and scripts used by Mix
</li>
<li><code class="inline">MIX_PATH</code> - appends extra code paths
</li>
<li><code class="inline">MIX_QUIET</code> - does not print information messages to the terminal
</li>
<li><code class="inline">MIX_REBAR</code> - path to rebar command that overrides the one Mix installs
</li>
<li><code class="inline">MIX_REBAR3</code> - path to rebar3 command that overrides the one Mix installs
</li>
</ul>
<p>Environment variables that are not meant to hold a value (and act basically as
flags) should be set to either <code class="inline">1</code> or <code class="inline">true</code>, for example:</p>
<pre><code class="nohighlight makeup elixir"><span class="err">$</span><span class="w"> </span><span class="nc">MIX_DEBUG</span><span class="o">=</span><span class="mi">1</span><span class="w"> </span><span class="n">mix</span><span class="w"> </span><span class="n">compile</span></code></pre>
        </section>

        <section id="summary" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#summary">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Summary
          </h1>
          
  <div class="summary-functions summary">
    <h2>
      <a href="#functions">Functions</a>
    </h2>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#compilers/0">compilers()</a>
  </div>
    <div class="summary-synopsis"><p>Returns the default compilers used by Mix</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#debug/1">debug(debug)</a>
  </div>
    <div class="summary-synopsis"><p>Sets Mix debug mode</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#debug?/0">debug?()</a>
  </div>
    <div class="summary-synopsis"><p>Returns <code class="inline">true</code> if Mix is in debug mode</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#env/0">env()</a>
  </div>
    <div class="summary-synopsis"><p>Returns the Mix environment</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#env/1">env(env)</a>
  </div>
    <div class="summary-synopsis"><p>Changes the current Mix environment to <code class="inline">env</code></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#raise/1">raise(message)</a>
  </div>
    <div class="summary-synopsis"><p>Raises a Mix error that is nicely formatted</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#shell/0">shell()</a>
  </div>
    <div class="summary-synopsis"><p>Returns the current shell</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#shell/1">shell(shell)</a>
  </div>
    <div class="summary-synopsis"><p>Sets the current shell</p>
</div>
</div>
  </div>
          
        </section>



        <section id="functions" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#functions">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Functions
          </h1>
<div class="detail" id="compilers/0">
    <div class="detail-header">
    <a href="#compilers/0" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">compilers()</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/mix/lib/mix.ex#L275" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
          </div>
  <section class="docstring">
<p>Returns the default compilers used by Mix.</p>
<p>It can be used in your <code class="inline">mix.exs</code> to prepend or
append new compilers to Mix:</p>
<pre><code class="nohighlight makeup elixir"><span class="kd">def</span><span class="w"> </span><span class="nf">project</span><span class="w"> </span><span class="k" data-group-id="6856887307-1">do</span><span class="w">
  </span><span class="p" data-group-id="6856887307-2">[</span><span class="ss">compilers</span><span class="p">:</span><span class="w"> </span><span class="nc">Mix</span><span class="o">.</span><span class="n">compilers</span><span class="w"> </span><span class="o">++</span><span class="w"> </span><span class="p" data-group-id="6856887307-3">[</span><span class="ss">:foo</span><span class="p">,</span><span class="w"> </span><span class="ss">:bar</span><span class="p" data-group-id="6856887307-3">]</span><span class="p" data-group-id="6856887307-2">]</span><span class="w">
</span><span class="k" data-group-id="6856887307-1">end</span></code></pre>
  </section>
</div>
<div class="detail" id="debug/1">
    <div class="detail-header">
    <a href="#debug/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">debug(debug)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/mix/lib/mix.ex#L314" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
          </div>
  <section class="docstring">
<p>Sets Mix debug mode.</p>
  </section>
</div>
<div class="detail" id="debug?/0">
    <div class="detail-header">
    <a href="#debug?/0" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">debug?()</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/mix/lib/mix.ex#L307" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
          </div>
  <section class="docstring">
<p>Returns <code class="inline">true</code> if Mix is in debug mode.</p>
  </section>
</div>
<div class="detail" id="env/0">
    <div class="detail-header">
    <a href="#env/0" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">env()</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/mix/lib/mix.ex#L246" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
          </div>
  <section class="docstring">
<p>Returns the Mix environment.</p>
<p>This function should not be used at runtime in application code (as opposed
to infrastructure and build code like Mix tasks). Mix is a build tool and may
not be available after the code is compiled (for example in a release).</p>
<p>To differentiate the program behavior depending on the environment, it is
recommended to use application environment through <a href="https://hexdocs.pm/elixir/Application.html#get_env/3"><code class="inline">Application.get_env/3</code></a>.
Proper configuration can be set in <a href="Mix.Config.html"><code class="inline">Mix.Config</code></a> files, often per-environment
(see <a href="Mix.Config.html#import_config/1"><code class="inline">Mix.Config.import_config/1</code></a> for more information).</p>
  </section>
</div>
<div class="detail" id="env/1">
    <div class="detail-header">
    <a href="#env/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">env(env)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/mix/lib/mix.ex#L260" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
          </div>
  <section class="docstring">
<p>Changes the current Mix environment to <code class="inline">env</code>.</p>
<p>Be careful when invoking this function as any project
configuration won’t be reloaded.</p>
<p>This function should not be used at runtime in application code
(see <a href="#env/0"><code class="inline">env/0</code></a> for more information).</p>
  </section>
</div>
<div class="detail" id="raise/1">
    <div class="detail-header">
    <a href="#raise/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">raise(message)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/mix/lib/mix.ex#L322" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>raise(<a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>()) :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">no_return</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Raises a Mix error that is nicely formatted.</p>
  </section>
</div>
<div class="detail" id="shell/0">
    <div class="detail-header">
    <a href="#shell/0" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">shell()</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/mix/lib/mix.ex#L290" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
          </div>
  <section class="docstring">
<p>Returns the current shell.</p>
<p><a href="#shell/0"><code class="inline">shell/0</code></a> can be used as a wrapper for the current shell. It contains
conveniences for requesting information from the user, printing to the shell and so
forth. The Mix shell is swappable (see <a href="#shell/1"><code class="inline">shell/1</code></a>), allowing developers to use
a test shell that simply sends messages to the current process instead of
performing IO (see <a href="Mix.Shell.Process.html"><code class="inline">Mix.Shell.Process</code></a>).</p>
<p>By default, this returns <a href="Mix.Shell.IO.html"><code class="inline">Mix.Shell.IO</code></a>.</p>
  </section>
</div>
<div class="detail" id="shell/1">
    <div class="detail-header">
    <a href="#shell/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">shell(shell)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/mix/lib/mix.ex#L300" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
          </div>
  <section class="docstring">
<p>Sets the current shell.</p>
<p>After calling this function, <code class="inline">shell</code> becomes the shell that is returned by
<a href="#shell/0"><code class="inline">shell/0</code></a>.</p>
  </section>
</div>
        </section>

          <footer class="footer">
        <p>
          <span class="line">
            Built using
            <a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.19.1),
          </span>
          <span class="line">
            designed by
            <a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>.
            </span>
        </p>
      </footer>
    </div>
  </div>
</section>
</div>
  <script src="dist/app-a0c90688fa.js"></script>
  
  </body>
</html>