UNPKG

trailpack-hapi

Version:

Hapi.js Trailpack. This pack binds the routes compiled in trailpack-router to a Hapi Server.

74 lines (63 loc) 2.22 kB
const path = require('path') module.exports = { async registerPlugins (server, app) { if (!app.config.get('web.plugins')) return app.log.debug('trailpack-hapi: registering', app.config.get('web.plugins').length, 'plugins') //await server.register(app.config.get('web.plugins')) await server.register(require('inert')) if (typeof app.config.get('web.onPluginsLoaded') === 'function') { app.config.get('web.onPluginsLoaded').call(app) } }, registerViews (server, app) { if (typeof server.views !== 'function') return if (!app.config.get('views.engines')) { app.log.warn('trailpack-hapi: web.views.engines is not set. vision plugin will not load') return } app.log.debug('trailpack-hapi: registering views') server.views(app.config.get('web.views')) }, registerRoutes (config, server, app) { server.route(app.routes) if (app.config.main.paths.www) { if (Array.isArray(app.config.main.paths.www)) { app.config.main.paths.www.map(item =>{ const staticDir = path.relative(app.config.main.paths.root, item.path) server.route({ method: 'GET', path: item.humanUrl ? item.humanUrl.concat('/{filename*}') : '/'.concat(staticDir.replace(/\\/g, '/'), '/{filename*}'), handler: { file: function(request) { return path.join(staticDir, request.params.filename) } } }) }) } else { const staticDir = path.relative(app.config.main.paths.root, app.config.main.paths.www) server.route({ method: 'GET', path: '/'.concat(staticDir.replace(/\\/g, '/'), '/{filename*}'), handler: { file: function(request) { return path.join(staticDir, request.params.filename) } } }) } } else { app.log.debug('config.paths.www: No www directory is set, static files will not be loaded') } }, registerExtensions (config, server, app) { config.extensions.forEach(ext => { ext.method = ext.method.bind({ app }) server.ext(ext) }) } }