<!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">"1.0.0"</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">"hello"</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">"1.0.0"</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">"~> 2.0"</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">"elixir-lang/plug"</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">"1.0.0"</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">"compile"</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">&</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">"Hello world"</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">&</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">"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">"</span><span class="p">,</span><span class="w"> </span><span class="s">"compile"</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">"clean"</span><span class="p">,</span><span class="w"> </span><span class="o">&</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">&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">"hello"</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">"world!"</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">"taskalias"</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="1228125883-4">[</span><span class="s">"hex.info"</span><span class="p">,</span><span class="w"> </span><span class="s">"run priv/hello.exs"</span><span class="p">,</span><span class="w"> </span><span class="s">"cmd priv/world.sh"</span><span class="p" data-group-id="1228125883-4">]</span><span class="p">,</span><span class="w"> </span><span class="ss">"taskalias2"</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="1228125883-5">[</span><span class="s">"run priv/hello1.exs"</span><span class="p">,</span><span class="w"> </span><span class="s">"run priv/hello2.exs"</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">"taskalias2"</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="9726281121-1">[</span><span class="s">"run -r priv/hello1.exs -r priv/hello2.exs"</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>