npm - когда для сборки достаточно нескольких команд (через cli прописывается в "scripts":{})
webpack - для сборки средних и больших приложений (HMR, live reload и т.д. очень удобны)
gulp - более универсален, так как это не просто сборщик, а таск раннер, но в то же время написанные таски могут быть не такими удобными в чтении и сопровождении, как конфиги в webpack'е
есть еще rollup - почти то же, что и webpack, только поскромнее и используется обычно для сборки библиотек, где кроме js особо ничего нету
И что касается конкретно вашего вопроса, то наверное webpack подойдет