This came from a beginner-based Elixir talk I did recently.

The process of preparing for it really got me thinking about the differences between Elixir and JavaScript and where their strengths and weaknesses are. They are both good at different things and it all depends on perspective.

So I have compiled a small list of surface-level features (i.e. things which impact the day-to-day use of) which I will be touching on here from the Elixir perspective.

Mix

Mix is the build tool which comes with Elixir. However there are a couple of the things which give it the edge over NPM.

Creating: mix includes an auto-generator which scaffolds your app for you. It produces a battle-tested and universally approved architecture, which is something you would need an additional tool for with JS (e.g Yeoman) Dependency management: It comes with HEX which is incredibly stable and comes from Erlang. JS still has controversy with the “NPM vs Yarn” question. Environment management: Mix comes with 3 environment concepts built-in, they are dev, test and prod. This is great and something missing from JS and you need an extra tool to assist with. Also compilation, formatting and testing. None of which come with NPM.

Another thing to note is that the commands are very consistent. In JS I have seen variations of the below:

npm run prettier

npm run format

npm run build-app

However with Mix the commands rarely change.

My feeling are that MIX is like many JS tools in 1. I.e.

Mix == npm + yeoman + babel + eslint + jest + dotenv

This kind of stability in tooling does real wonders for the ecosystem and consistency has an effect on adoption.