Note this:
acc[camelcase(dependency)] = require(dependency);
could be replaced with: Object.defineProperty(acc,camelcase(dependency),{get:function(){ return require(dependency) }})
and you'd get demand-loading!