@coko/server
Version:
Reusable server for use by Coko's projects
31 lines (24 loc) • 843 B
JavaScript
const config = require('config')
const logger = require('../logger')
const { logTask, logTaskItem } = require('../logger/internals')
const tryRequireRelative = require('../utils/tryRequireRelative')
const registerRecursively = (app, componentName) => {
const component = tryRequireRelative(componentName)
logTaskItem(`Registered component ${componentName}`)
const serverComponent = component.server || component.backend
if (serverComponent) {
serverComponent()(app)
logger.info('Registered server component', componentName)
}
if (component.extending) {
registerRecursively(app, component.extending)
}
}
module.exports = app => {
logTask('Register components')
if (config.has('components')) {
config.get('components').forEach(componentName => {
registerRecursively(app, componentName)
})
}
}