Внешний инструмент - это
Elixir. Ну или просто Grunt/Gulp/любой другой сборщик.
Никакого "правильно", кстати, в плане хранения исходников нет. Скомпилированные скрипты, конечно, должны лежать в public, а вот где лежат исходники совершенно неважно, лишь бы сборщик знал, где их искать.