npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

moonboots_hapi

v7.0.0

Published

Moonboots plugin that allows it to serve files using a hapi server

Downloads

83

Readme

moonboots-hapi

====

NPM

Moonboots plugin that allows it to serve files using a hapi server. Be sure to use at least hapi 2.0 (won't work on 1.0, see legacy branch for 1.0)

How to use:

Exactly like moonboots, but with routing info. The moonboots-specific config is put in a moonboots subconfig. Also there is no longer any need to pass in a server parameter.

var Hapi = require('hapi');
var MoonbootsHapi = require('moonboots-hapi');

var config = {
    appPath: '/myapp/{clientPath*}',
    moonboots: {
        main: __dirname + '/sample/app/app.js',
        developmentMode: false,
        libraries: [
            __dirname + '/sample/libraries/jquery.js'
        ],
        stylesheets: [
            __dirname + '/styles.css'
        ]
    }
};

var server = new Hapi.Server();
server.connection({ host: 'localhost', port: 3001 });

server.register({
    register: MoonbootsHapi,
    options: config
}, server.start);
;
});

Additional options

You can disable specific routes (all are enabled by default) using the routes config

This example would tell moonboots-hapi not to add the route for the html app to hapi. You can do the same with js for the js route and css for the css route.

var options = {
    routes: {html: false}
};

You can specify labels for your your routes, simply pass them in as a config item (see Hapi documentation for plugin.select for more information on labels)

var options = {
    appPath = '/app',
    labels: ['foo'],
    moonboots: {/* ... */}
};

You can also configure each of the three routes (app, js, and css) as much you want. Simply pass in anything that would go in the config of a Hapi route for that particular route.

var config = {
    appPath: '/app',
    appConfig: {
        //Anything here will go into the config for the app route
    },
    jsConfig: {
        //Anything here will go into the config for the js route
    },
    cssConfig: {
        //Anything here will go into the config for the css route
    },
    moonboots: {/* moonboots config*/}
};

The app by default will serve on all requests unless you pass in an appPath option

js and css paths will default to appPath if it is defined, and will default to app.js and app.css respectively otherwise.

var Hapi = require('hapi');

var config = {
    appPath: '/app',
    appConfig: {
        auth: 'session',
    }
    moonboots: {
        main: __dirname + '/sample/app/app.js',
        developmentMode: false,
        libraries: [
            __dirname + '/sample/libraries/jquery.js'
        ],
        stylesheets: [
            __dirname + '/styles.css'
        ]
    }
};

var server = new Hapi.Server();
server.connection({ host: 'localhost', port: 3000 });

server.route({
    method: 'get',
    path: '/',
    handler: function (request, reply) {
        reply().redirect('/app');
    }
});

server.register({
    register: MoonbootsHapi,
    options: config
}, server.start);

Templated app

By default moonboots serves up an app html of just a script and css tag linking to the js and css source. You can override this by passing an appTemplate option. This string will be passed to the view handler in hapi, and given the following context:

{
    jsFileName: '/link/to/app.js',
    cssFileName: '/link/to/app.css'
}

Test

Run npm test

Sample

Run npm start and make sure you have a grey (#ccc) background and the "Woo! View source to see what rendered me" message in your window.

#License

MIT