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

koa-meta

v4.0.2

Published

SEO <title> and <meta name="description"> middleware for Koa and Lad

Downloads

313

Readme

koa-meta

build status code style styled with prettier made with lass license

Meta <title> and <meta name="description"> middleware for Koa and Lad

Table of Contents

Install

npm:

npm install koa-meta

Usage

Use middleware:

const path = require('path');

const views = require('@ladjs/koa-views');
const Meta = require('koa-meta');

/// ...

// set template rendering engine (see @ladjs/web for inspiration)
app.use(views(path.join(__dirname, 'views')));

const meta = new Meta({
  '/': [ 'Home', 'Our home page description' ],
  '/contact', [ 'Contact', 'Contact us with questions' ]
});

// note: you can also pass a second argument of a custom `logger`
// the default logger is `console` and must have a `.error` method
// `const meta = new Meta({}, console);`

app.use(meta.middleware);

app.use((ctx, next) => {
  // since the previous middleware was defined before this
  // the `ctx.state` object has been populated with metadata
  // when the render call occurs (it will not override any existing set values)
  // for a request with `ctx.path` of `/` it will output:
  // { title: 'Home', description: 'Our home page description' }
  ctx.render('home');
});

Therefore in your views you can render the meta data easily:

doctype html
html
  head
    title= meta.title
    meta(name="description", content=meta.description)

Programmatically get a meta object/translated version of title and description:

const Meta = require('koa-meta');

const meta = new Meta({
  '/': [ 'Home', 'Our home page description' ],
  '/posts': [ 'Posts', 'Posts by our team' ]
});

console.log(meta.getByPath('/posts/123456'));
// `{ title: 'Posts', description: 'Posts by our team' }`

Translation Support

This package supports translation out of the box.

It checks for a function set on ctx.request.t and utilizes that function to translate based off the request's locale.

Child Path Support

This package supports parent meta data lookup for children of paths.

This means if you define in your configuration a path of /posts and a request is made to /posts/123456 (with this path not being defined in your configuration), then it will use /posts definition for /posts/123456.

Error Catching

By default this package will throw an error if a child path was found that does not have a parent defined.

This is extremely useful for retaining quality control with your configuration.

However this is configurable based off the third argument passed to new Meta(), e.g. new Meta(config, logger, levelForMissing.

The value of levelForMissing defaults to error for when process.env.NODE_ENV is equal to development, otherwise it defaults to debug.

This is configurable, therefore you can simply pass new Meta(config, logger, 'warn') if you want warn to be the log level for missing meta configurations.

Contributors

| Name | Website | | -------------- | -------------------------- | | Nick Baugh | http://niftylettuce.com/ |

License

MIT © Nick Baugh