mix
— The software
project management tool
mix |
[TASK] [project_name] |
elixir |
[OPTIONS] -S
mix [TASK]
[project_name] |
mix
is intended for both organizing code
into projects and their maintenance. For the latter the tool offers some
advanced features like dependency management, packaging, preparing
documentation, testing and so on.
Have a look at the SYNOPSIS section and the
second way of running mix
it offers. The point is
that the tool is none other than the Elixir script, therefore it can be
invoked via
elixir(1)
in the same way as any other script. It's useful when you want to run
mix
with particular options.
All the mix
functionality is represented
by a set of tasks. A
task is a
piece of code written in Elixir and intended for solving a particular
problem. Like programs, many tasks accept input parameters and/or support
options which slightly modify their behavior, but others do not. There are
two types of tasks: those that are available after installation this or that
archive (local tasks) and those that are offered by
mix
(built-in tasks). The
run task
will be executed by default if none other has been specified.
In spite of the fact that the greater part of
mix
is tasks, the man page doesn't contain the help
information related to each of them because mix
is
self-descriptive. Thus, using the
help task, you can
get both the full list of local/built-in tasks and the information related
to a particular task.
An
archive, in terms
of Erlang/OTP, is the ZIP file with the
.ez
extension which contains a precompiled OTP application with all its
dependencies [1].
An
application
is an entity that helps to combine sets of components into a single unit to
simplify their reusing in other systems [2].
MIX_ARCHIVES
- Allows specifying the directory into which the archives should be
installed (see mix
help archive.install). The
~/.mix/archives
directory is used for this purpose by default.
MIX_DEBUG
- When set, outputs debug information about each task before running
it.
MIX_ENV
- Allows specifying which environment should be used. The
dev
environment is used by default if none other has been specified.
Sometimes you have to use a particular set of configuration
parameter values or perform particular steps when you compile or run a
project (or in some other cases). The mix
environments allow grouping values of configuration parameters and steps
to switch between them by specifying the necessary environment via
MIX_ENV.
MIX_TARGET
- Allows specifying which target should be used. The
host
target is used by default if none other has been specified.
MIX_EXS
- Allows changing the full path to the mix.exs file (see
FILES section). The most obvious
use case is to have more than one copy of mix.exs in a
project, but it's worth noting that MIX_EXS should be used only if the
mix
environments (see above) are not enough to
solve the problem.
MIX_HOME
- path to Mix's home directory, stores configuration files and scripts used
by Mix
- MIX_INSTALL_DIR
- Specifies directory where Mix.install/2 keeps installs cache
- MIX_INSTALL_FORCE
- Runs Mix.install/2 with empty install cache
MIX_PATH
- Allows expanding the code path. If the MIX_PATH environment variable has a
value which consists of multiple paths, they must be colon-separated (for
Unix-like operating systems) or semicolon-separated (for Windows).
As mentioned above, there are two types of tasks: local and
built-in. These tasks are always visible for mix
because the directories, in which they are located, are a part of code
path. If a task belongs to neither the one type nor the other, MIX_PATH
helps you say to mix
where it should search the
task.
MIX_QUIET
- When set, does not print information messages to the terminal.
- mix.exs
- Contains the most significant information related to the project, such as
its name, version, list of dependencies and so on. As a rule, the file is
named mix.exs and located at the top of the project's
source tree, but you can change the full path to it using the MIX_EXS
environment variable (see the ENVIRONMENT
section).
- mix.lock
- Allows locking down the project dependencies with a proper version range
before performing any updates. It is useful when you know that your
project is incompatible with newer versions of certain dependencies. The
file is located at the top of the project's source tree as well as
mix.exs (see above).
- [1] https://www.erlang.org/doc/man/code.html#id103620
-
- [2] https://www.erlang.org/doc/design_principles/applications.html
-
- Elixir is maintained by The Elixir Team.
-
- This manual page was contributed by Evgeny Golyshev.
-
- Copyright (c) 2012 Plataformatec.
-
- Copyright (c) 2021 The Elixir Team.
-
- Main website: https://elixir-lang.org
-
- Documentation: https://elixir-lang.org/docs.html
-
- Package manager: https://hex.pm
-