{"id":33901094,"url":"https://github.com/intentionally-left-nil/wand","last_synced_at":"2026-05-26T13:33:58.473Z","repository":{"id":62430753,"uuid":"138089902","full_name":"intentionally-left-nil/wand","owner":"intentionally-left-nil","description":"CLI tool to manage elixir dependencies","archived":false,"fork":false,"pushed_at":"2018-09-22T23:17:54.000Z","size":568,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-30T06:24:38.357Z","etag":null,"topics":["amazing","cli","dependency-manager","elixir","wand"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/intentionally-left-nil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-20T21:55:03.000Z","updated_at":"2019-08-03T04:11:32.000Z","dependencies_parsed_at":"2022-11-01T20:19:48.709Z","dependency_job_id":null,"html_url":"https://github.com/intentionally-left-nil/wand","commit_stats":null,"previous_names":["anilredshift/wand"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/intentionally-left-nil/wand","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intentionally-left-nil%2Fwand","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intentionally-left-nil%2Fwand/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intentionally-left-nil%2Fwand/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intentionally-left-nil%2Fwand/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intentionally-left-nil","download_url":"https://codeload.github.com/intentionally-left-nil/wand/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intentionally-left-nil%2Fwand/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33522963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T03:12:49.672Z","status":"ssl_error","status_checked_at":"2026-05-26T03:12:47.976Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amazing","cli","dependency-manager","elixir","wand"],"created_at":"2025-12-11T23:45:47.351Z","updated_at":"2026-05-26T13:33:58.467Z","avatar_url":"https://github.com/intentionally-left-nil.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wand [![Hex version badge](https://img.shields.io/hexpm/v/wand.svg)](https://hex.pm/packages/wand)\n\n**wand** is a dependency manager that uses a _wand.json_ file to replace your deps() in mix.exs. This allows you to add, remove, and upgrade packages easily using the wand cli.\n\n## Quickstart\nTo install, paste into a terminal: `mix archive.install hex wand_core --force \u0026\u0026 mix escript.install hex wand --force`\n\nTo use wand in a project: `wand init`\n\nAdd a dependency: `wand add poison`\n\nRemove a dependency: `wand remove poison`\n\nUpgrade a dependency: `wand upgrade poison --latest`\n\nhelp: `wand --?`\n\n## How it works\nWand works by removing your dependencies from mix.exs and storing them instead in `wand.json`. This is necessary because `mix.exs` is a _code_ file - it's regular elixir. This makes programatically updating dependencies hard because of the complex mix.exs files folks can have. Instead, by saving the dependencies in `wand.json`, wand can easily add, remove, and upgrade your dependencies.\n\n# Installing wand\n\n## Prerequisites\nWand requires [elixir](https://elixir-lang.org/install.html) before installing. You also need to have hex installed by running `mix local.hex`\n\n## Installation\nTo install, we need to add wand_core, wand, and then make sure the binary is on your path.\nAdding wand and wand_core is simple. Just open a terminal and paste the following line in:\n`mix archive.install hex wand_core --force \u0026\u0026 mix escript.install hex wand --force`\n\nOnce that is done, then wand is successfully installed on your system to `~/.mix/escripts`. You can verify that by running `~/.mix/escripts/wand` in the terminal. If successful, it should display the wand help information. It's a pain to type the full path every time, so it is suggested you add the directory to your path. Edit your `.bashrc` (or similar config file) to look something like this: `export PATH=$HOME/.mix/escripts:$PATH`. Then, restart your terminal, and run `which wand`. If that points to `~/.mix/escripts/wand`, then you're all set!\n\n## Verify Installation\nYou can verify that wand was properly installed by typing `wand --version` to make sure wand is installed, and `wand core --version` to make sure that [wand_core](http://github.com/anilredshift/wand-core) is installed\n\n### Usage\nGet started by navigating to an existing elixir project and type `wand init`. This will generate a _wand.json_ file. You should check this file into your source control. From now on, your dependencies are controlled by _wand.json_ in conjunction with your _mix.lock_ file. Let's take a quick look at an example wand.json file:\n```\n{\n  \"version\": \"1.0.0\",\n  \"dependencies\": {\n    \"ex_doc\": [\"\u003e= 0.0.0\",{\"only\":\":dev\"}],\n    \"excoveralls\": [\"~\u003e 0.9.1\",{\"only\":\":test\"}],\n    \"junit_formatter\": [\"~\u003e 2.2\",{\"only\":\":test\"}],\n    \"mox\": [\"~\u003e 0.3.2\",{\"only\":\":test\"}]\n  }\n}\n```\nThe dependencies key should look very similar to your deps() inside of mix.exs. The pattern of each entry is either `name: requirement` or `name: [requirement, {opts}]`. The options should look familiar, they exactly match the existing [allowed options](https://hexdocs.pm/mix/Mix.Tasks.Deps.html). It's possible to edit this by hand, but it's better to use the wand cli:\n\n## CLI commands\n```\nadd         Add dependencies to your project\ncore        Manage the related wand_core package\nhelp        Get detailed help\ninit        Initialize wand for a project\noutdated    List packages that are out of date\nremove      Remove dependencies from your project\nupgrade     Upgrade a dependency in your project\nversion     Get the version of wand installed on the system\n\nOptions\n\n--verbose   Detailed help for every command\n--?         Same as --verbose\n```\n\nDetailed help is available by typing wand help [command] or by clicking on the links below:\n\n* `Wand.CLI.Commands.Add`\n* `Wand.CLI.Commands.Core`\n* `Wand.CLI.Commands.Help`\n* `Wand.CLI.Commands.Init`\n* `Wand.CLI.Commands.Outdated`\n* `Wand.CLI.Commands.Remove`\n* `Wand.CLI.Commands.Upgrade`\n* `Wand.CLI.Commands.Version`\n\n## CircleCI and other CI.\nYou need to have the wand_core archive added to your image before running mix deps.get. The command for CircleCI would be:\n`- run: mix archive.install hex wand_core --force`\n\n## Publishing packages\nYou need to make sure that wand.json is uploaded to hex when publishing packages. This is accomplished by modifying the `package` key in your `mix.exs` file as follows:\n```elixir\ndef project do\n  [\n    package: [\n      files: [\"mix.exs\", \"wand.json\", \"lib\"] # etc add more files as needed\n    ]\n  ]\nend\n```\nThis will ensure that wand.json is uploaded along with your other files\n\n## Local development\n1. `mix archive.install hex wand_core --force`\n2. `git clone git@github.com:AnilRedshift/wand.git`\n3. `cd wand`\n4. `mix deps.get`\n5. `mix test`\n\n## Integration tests\nWand also has tests which run the wand binary against real mix projects to verify their behavior. You can run these with `mix test --include external`\n\nAdditionally, you can see the CLI output of each command with `mix test --include external --include print`\n\n\n# Build status\n[![Coverage Status](https://coveralls.io/repos/github/AnilRedshift/wand/badge.svg?branch=master)](https://coveralls.io/github/AnilRedshift/wand?branch=master)[![CircleCI branch](https://img.shields.io/circleci/project/github/AnilRedshift/wand/master.svg)](circle)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintentionally-left-nil%2Fwand","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintentionally-left-nil%2Fwand","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintentionally-left-nil%2Fwand/lists"}