I am working on my book Elixir Function Guide
. Having noticed that there are a lot of mix tasks that I did not know about (and some that my exercism.io students don’t) then I thought that I would add some details at the start of the book.
I started using mix help
to list the available functions:
mix # Runs the default task (current: "mix run") mix app.start # Starts all registered apps mix app.tree # Prints the application tree mix archive # Lists installed archives mix archive.build # Archives this project into a .ez file mix archive.install # Installs an archive locally mix archive.uninstall # Uninstalls archives mix clean # Deletes generated application files mix cmd # Executes the given command mix compile # Compiles source files mix credo # Run code analysis (use `--help` for options) mix credo.gen.check # Generate a new custom check for Credo mix credo.gen.config # Generate a new config for Credo mix deps # Lists dependencies and their status mix deps.clean # Deletes the given dependencies' files mix deps.compile # Compiles dependencies mix deps.get # Gets all out of date dependencies mix deps.tree # Prints the dependency tree mix deps.unlock # Unlocks the given dependencies mix deps.update # Updates the given dependencies mix do # Executes the tasks separated by comma mix escript # Lists installed escripts mix escript.build # Builds an escript for the project mix escript.install # Installs an escript locally mix escript.uninstall # Uninstalls escripts mix format # Formats the given files/patterns mix help # Prints help information for tasks mix hex # Prints Hex help information mix hex.audit # Shows retired Hex deps for the current project mix hex.build # Builds a new package version locally mix hex.config # Reads, updates or deletes local Hex config mix hex.docs # Fetches or opens documentation of a package mix hex.info # Prints Hex information mix hex.organization # Manages Hex.pm organizations mix hex.outdated # Shows outdated Hex deps for the current project mix hex.owner # Manages Hex package ownership mix hex.publish # Publishes a new package version mix hex.repo # Manages Hex repositories mix hex.retire # Retires a package version mix hex.search # Searches for package names mix hex.user # Manages your Hex user account mix loadconfig # Loads and persists the given configuration mix local # Lists local tasks mix local.hex # Installs Hex locally mix local.phx # Updates the Phoenix project generator locally mix local.public_keys # Manages public keys mix local.rebar # Installs Rebar locally mix new # Creates a new Elixir project mix phx.new # Creates a new Phoenix v1.4.0 application mix phx.new.ecto # Creates a new Ecto project within an umbrella project mix phx.new.web # Creates a new Phoenix web project within an umbrella project mix profile.cprof # Profiles the given file or expression with cprof mix profile.eprof # Profiles the given file or expression with eprof mix profile.fprof # Profiles the given file or expression with fprof mix release # Assembles a self-contained release mix release.init # Generates sample files for releases mix run # Starts and runs the current application mix test # Runs a project's tests mix xref # Prints cross reference information iex -S mix # Starts IEx and runs the default task
It was only then that I realised that I have a number of mix extensions installed.
I need to start with what comes out of the box.
At this point I have three choices:
- Uninstall the extensions (these are usefull .)
- Manually edit out the extensions (error prone)
- Use docker
The docker option is appealing as it will allow me to test using different versions of Elixir.
Here is the simple option that allows the use of docker:
docker run -it elixir:1.10 /bin/bash
This downloads the image and runs up the container. Note that this starts with bash, rather than the default iex.
From this mix help gives the more useful list:
mix # Runs the default task (current: "mix run") mix app.start # Starts all registered apps mix app.tree # Prints the application tree mix archive # Lists installed archives mix archive.build # Archives this project into a .ez file mix archive.install # Installs an archive locally mix archive.uninstall # Uninstalls archives mix clean # Deletes generated application files mix cmd # Executes the given command mix compile # Compiles source files mix deps # Lists dependencies and their status mix deps.clean # Deletes the given dependencies' files mix deps.compile # Compiles dependencies mix deps.get # Gets all out of date dependencies mix deps.tree # Prints the dependency tree mix deps.unlock # Unlocks the given dependencies mix deps.update # Updates the given dependencies mix do # Executes the tasks separated by comma mix escript # Lists installed escripts mix escript.build # Builds an escript for the project mix escript.install # Installs an escript locally mix escript.uninstall # Uninstalls escripts mix format # Formats the given files/patterns mix help # Prints help information for tasks mix loadconfig # Loads and persists the given configuration mix local # Lists local tasks mix local.hex # Installs Hex locally mix local.public_keys # Manages public keys mix local.rebar # Installs Rebar locally mix new # Creates a new Elixir project mix profile.cprof # Profiles the given file or expression with cprof mix profile.eprof # Profiles the given file or expression with eprof mix profile.fprof # Profiles the given file or expression with fprof mix release # Assembles a self-contained release mix release.init # Generates sample files for releases mix run # Starts and runs the current application mix test # Runs a project's tests mix xref # Prints cross reference information iex -S mix # Starts IEx and runs the default task
I have been making a list of resources for the trainees in my team for them to read up on Elixir. Your article is really detailed and well written. Thank you for sharing this, keep sharing such resources.